PirateNets
TL;DR
Deep PINNs train worse than shallow ones because bad initialization of the network derivatives destabilizes the residual loss. PirateNets add a trainable skip
The problem: depth hurts PINNs
For standard MLPs with common initializations, the derivatives of the network — which is what the PDE residual sees — become increasingly pathological with depth. Empirically, PINN accuracy degrades as MLPs get deeper, the opposite of what we expect from deep learning.
The architecture
Input coordinates are first lifted by an embedding
Each residual block
The key design is the adaptive skip
: the block is an identity map — the whole network reduces to a linear combination of the first-layer embeddings, which is trivially well-conditioned for the residual loss. : a fully nonlinear block with no shortcut.
Initializing
In JAXPI
arch.arch_name = "PirateNet"
arch.num_layers = 2 # residual blocks (depth 3L)
arch.hidden_dim = 256
arch.nonlinearity = 0.0 # initial alpha for every block
arch.fourier_emb = {"embed_scale": 2.0, "embed_dim": 256} # must equal hidden_dimThe learned logging.log_nonlinearities = True) — watching them grow is a nice window into how much depth the problem actually needs.
Where it's used
The default architecture of nearly every benchmark; the Taylor–Green multi-stage cascade relies on it at every stage. See Architectures for the other options.