| paper: | |
| title: "Fourier Neural Operator for Parametric Partial Differential Equations" | |
| arxiv: "2010.08895" | |
| experiment: "FNO-2D Navier-Stokes, nu=1e-5, T=20" | |
| viscosity: 1.0e-5 | |
| reference_relative_l2: 0.1556 | |
| reference_parameter_count: 414517 | |
| reference_epoch_seconds_v100: 127.80 | |
| data: | |
| root: "/public/share/sugonhpcapp01/onestore/onedatasets/FNO_data" | |
| file: "NavierStokes_V1e-5_N1200_T20.mat" | |
| key: "u" | |
| layout: "N,H,W,T" | |
| dtype: "float32" | |
| expected_shape: [1200, 64, 64, 20] | |
| resolution: [64, 64] | |
| ntrain: 1000 | |
| ntest: 200 | |
| train_start: 0 | |
| test_start: 1000 | |
| history: 10 | |
| horizon: 10 | |
| recording_interval: 1.0 | |
| future_times: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20] | |
| normalization: "none" | |
| model: | |
| name: "FNO2d" | |
| input_channels: 10 | |
| output_channels: 1 | |
| use_grid: true | |
| grid_channels: 2 | |
| grid_include_endpoint: false | |
| width: 32 | |
| modes1: 12 | |
| modes2: 12 | |
| num_layers: 4 | |
| projection_width: 128 | |
| activation: "relu" | |
| normalization: "batch_norm" | |
| block_order: "relu(batch_norm(spectral_plus_pointwise))" | |
| fft_norm: "backward" | |
| spectral_init: "scaled_uniform_complex" | |
| training: | |
| epochs: 500 | |
| batch_size: 20 | |
| optimizer: "adam" | |
| learning_rate: 0.001 | |
| weight_decay: 0.0 | |
| scheduler: "step_lr" | |
| scheduler_step_size: 100 | |
| scheduler_gamma: 0.5 | |
| seed: 0 | |
| dtype: "float32" | |
| amp: false | |
| gradient_clipping: null | |
| ema: false | |
| distributed: "single" | |
| num_workers: 0 | |
| pin_memory: true | |
| deterministic: true | |
| relative_l2_epsilon: 1.0e-12 | |
| train_rollout_steps: 10 | |
| evaluation_rollout_steps: 10 | |
| checkpoint_monitor: "train_full_relative_l2" | |
| checkpoint_mode: "min" | |
| evaluate_test_every_epoch: true | |
| inference: | |
| batch_size: 20 | |
| seed: 0 | |
| dtype: "float32" | |
| rollout_steps: 10 | |
| paths: | |
| checkpoint: "weight/best_model.pth" | |
| results_dir: "results" | |
| train_history: "results/train_history.json" | |
| predictions: "results/predictions.npz" | |
| metrics: "results/metrics.json" | |
| per_sample_metrics: "results/per_sample_metrics.csv" | |
| training_curves: "results/training_curves.png" | |
| rollout_figure: "results/sample_000_rollout.png" | |
| run_metadata: "results/run_metadata.json" | |
| summary: "results/summary.md" | |
| assumptions: | |
| - "The paper does not specify a validation split; the best checkpoint is selected using train full-trajectory relative L2, never test error." | |
| - "The paper does not specify batch size or seed; batch_size=20 and seed=0 are explicit engineering assumptions." | |
| - "The paper does not define the exact relative-L2 reduction; ratios are computed per sample and then averaged with epsilon=1e-12." | |
| - "The paper does not specify the projection hidden width; projection_width=128 is configurable." | |
| - "Coordinate-grid input is configurable and enabled; the periodic grid excludes the duplicated endpoint." | |
| - "The block ordering is ReLU(BatchNorm(spectral + pointwise)); the paper states ReLU and batch normalization but not their exact order." | |
| - "Adam uses weight_decay=0.0 because the paper does not state an additional weight-decay regularizer." | |
| conflicts: | |
| - "The paper states d_v=32 but reports 414,517 parameters without enough connection details to reproduce both uniquely. Width 32 takes precedence and the actual parameter count must be reported." | |