Skip to content

CorrectorNet ​

Input and output ​

CorrectorNet is the residual U-Net in src/neuralpom/models/corrector_net.py. The hybrid input includes current and historical velocities, temperature and salinity, sea-surface elevation and depth-averaged transports. Six three-dimensional fields over 16 storage levels and five two-dimensional fields give 101 input channels.

The output contains increments for zonal velocity, meridional velocity, temperature and salinity over 15 active layers, giving 60 output channels. The portable templates use a network width of 256.

The channel map ​

Input groupFieldsChannels
Three-dimensional fieldsu, ub, v, vb, t, s6 × 16 = 96
Two-dimensional fieldsel, ua, uab, va, vab5
Total inputPacked in the order above101
Output incrementsu, v, t, s on active layers4 × 15 = 60

The b suffix marks backward velocity or transport levels. Temperature and salinity inputs use their current fields. The input contract is defined in hybrid/constants.py, and packing is implemented in hybrid/state.py.

Why predict increments ​

An increment is applied to an already advanced physical endpoint. The residual U-Net can represent corrections at several horizontal scales while the physical solver continues to carry the prognostic state. The output passes through the physical constraints before it becomes a state change. Consequently, an output tensor alone is not a complete corrected restart.

Physical application ​

The network output is decoded using the matching training calibration. hybrid/sparse_coupling.py applies velocity column constraints, tracer layer budgets and joint limiting, then updates the physical state and density. This corrected endpoint is carried into the following physical interval. The correction map is shared by the training and frozen forecast interfaces.