Fixed Laplace Neural Operator Layer¶
fixed_lno_layer_type
fixed_lno_layer_type(
num_outputs,
num_modes,
num_inputs=...,
use_bias=.true.,
activation="none",
kernel_initialiser=...,
bias_initialiser=...
)
The fixed_lno_layer_type derived type provides a Laplace neural operator layer.
It combines a local bypass with a spectral pathway defined via a learnable pole–residue decomposition:
where:
\(\mathbf{u} \in \mathbb{R}^{n_{in}}\) is the input sampled on a grid
\(\boldsymbol{\mu} \in \mathbb{R}^{M}\) are learnable Laplace-domain poles
\(\mathbf{E}(\boldsymbol{\mu}) \in \mathbb{R}^{M \times n_{in}}\) is the pole-residue encoder: \(E_{k,j}=\exp(-\mu_k\,t_j)\), \(t_j = (j{-}1)/(n_{in}{-}1)\)
\(\boldsymbol{\beta} \in \mathbb{R}^{M}\) are learnable residues forming \(\mathrm{diag}(\boldsymbol{\beta})\)
\(\mathbf{D}(\boldsymbol{\mu}) \in \mathbb{R}^{n_{out} \times M}\) is the pole-residue decoder: \(D_{i,k}=\exp(-\mu_k\,\tau_i)\), \(\tau_i = (i{-}1)/(n_{out}{-}1)\)
\(\mathbf{W} \in \mathbb{R}^{n_{out} \times n_{in}}\) is the learnable local bypass matrix
\(\mathbf{b} \in \mathbb{R}^{n_{out}}\) is the bias vector when
use_bias=.true.\(M\) is
num_modes\(\sigma\) is the activation function
Arguments¶
num_outputs (
integer): Number of output discretisation points.num_modes (
integer): Number of spectral poles.num_inputs (
integer): Number of input discretisation points. If not provided, it is inferred when the layer is initialised.use_bias (
logical): If.false., the layer will not use a bias term. Default:.true..activation (
class(*)): Activation function for the layer.Accepts
character(*)orclass(base_actv_type).See Activation Functions for available options.
Default:
none_actv_type.
kernel_initialiser (
class(*)): Initialiser for the learnable residues \(\boldsymbol{\beta}\) and local bypass weights \(\mathbf{W}\) (see Initialisers).bias_initialiser (
class(*)): Initialiser for the biases (see Initialisers). Default:zeros_init_type.
Shape¶
Input:
(num_inputs, batch_size).Output:
(num_outputs, batch_size).
Parameters¶
The layer contains the following learnable parameters:
μ: Spectral poles of shape
(num_modes).β: Residues of shape
(num_modes).W: Local bypass matrix of shape
(num_outputs, num_inputs).b: Bias vector of shape
(num_outputs)whenuse_bias=.true..
The following tensors are fixed after initialisation and are not learnable:
E(μ): Encoder basis of shape
(num_modes, num_inputs).D(μ): Decoder basis of shape
(num_outputs, num_modes).
Total learnable parameters:
With bias:
2*num_modes + num_outputs*num_inputs + num_outputsWithout bias:
2*num_modes + num_outputs*num_inputs
Examples¶
Basic Laplace neural operator block:
use athena
type(network_type) :: network
call network%add(fixed_lno_layer_type( &
num_inputs=128, &
num_outputs=128, &
num_modes=16, &
activation="relu" &
))
Stacked operator network with dense readout:
call network%add(fixed_lno_layer_type( &
num_inputs=256, &
num_outputs=256, &
num_modes=32, &
activation="swish" &
))
call network%add(fixed_lno_layer_type( &
num_outputs=128, &
num_modes=16, &
activation="swish" &
))
call network%add(full_layer_type( &
num_outputs=1, &
activation="none" &
))
Notes¶
Larger
num_modesincreases spectral expressiveness but also increases the quadratic parameter cost of \(\mathbf{R}\).The fixed encoder and decoder bases make this layer resolution-aware through the chosen input and output grid sizes.
This layer is more expressive than the mean-field neural operator layer, but more expensive to evaluate.
See Also¶
neural_operator_layer_type - Simpler mean-field neural operator layer
dynamic_lno_layer_type - More flexible Laplace neural operator layer with learnable bases
full_layer_type - Standard dense layer