Neural Parameterization¶
nn_feature_based — spatially varying learned parameter¶
An nn_feature_based parameter is a spatially varying learned parameter: an
attribute-to-parameter mapping from static environmental attributes to parameter
values. The current implementation uses one independent multilayer perceptron (MLP)
per physical parameter, but the framework accepts any differentiable mapping of the
attributes.
For site-wise parameters, the mapping predicts one value per site.
For layer-wise parameters, it predicts one value per site and soil layer.
ADELM selects the execution path from the target parameter shape; the config always
uses the same source name, nn_feature_based.
The mapping structure is:
[n_features]
-> Linear -> ELU -> Dropout
-> ...
-> Linear -> sigmoid -> physical bounds
= parameter values within declared bounds
Inputs for site-wise parameters: static environmental attribute features listed in
parameterization.nn.attri_features.Inputs for layer-wise parameters: the same attribute features, augmented with
soil_sand_fraction,soil_clay_fraction, andsoil_organic_matter_fractionfor each soil layer.Hidden layers: widths configured via
parameterization.nn.hidden_dims.Dropout: applied after each hidden ELU; rate set by
parameterization.nn.dropout_rate.Output:
site-wise parameters produce one bounded value per site
layer-wise parameters produce one bounded value per site and soil layer
Initialization: weights use Kaiming uniform initialization; biases are set to zero.
Suitable for: parameters expected to vary spatially with vegetation type, climate, or soil conditions—such as maximum stomatal conductance or root distribution shape—as well as layered soil parameters whose values depend on both site context and soil texture.
Bounds and physical constraints¶
See also
Configuration — parameterization.parameters section for how to declare bounds in config.yaml.
Every nn_global or nn_feature_based parameter must declare bounds: [lower, upper] in the
config. The logistic transform guarantees that the predicted value always lies strictly inside
(lower, upper) without clipping.
parameterization:
parameters:
jarvis_max_stomatal_conductance:
source: nn_feature_based
bounds: [50, 300] # mm s-1; sigmoid output always in (50, 300)
jarvis_radiation_half_saturation:
source: nn_global
bounds: [50, 800] # W m-2
During training¶
Learnable parameters are recomputed during each forward pass using the current
weights. Gradients propagate back through the bounded transform and into the MLP
weights (for nn_feature_based) or the logit scalars (for nn_global), so the
entire forward chain—process equations, state updates, parameter mappings, and
loss—shares a single automatic-differentiation graph.