WeatherScenarioDiffusion-1D

WeatherScenarioDiffusion-1D is a conditional 1D diffusion model for multivariate weather time-series scenario generation.

The model is trained on Duyu/Time-Series-Forecasting-Benchmark-Datasets, file Weather.csv.

What The Model Does

This is a single conditional diffusion model with three usage modes:

  1. Unconditional scenario generation: sample realistic multivariate weather trajectories from noise.
  2. Future-mask generation: condition on the first part of a window and generate the missing future segment.
  3. Channel inpainting: condition on known weather variables and generate missing variables.

The model uses:

  • diffusers.UNet1DModel
  • diffusers.DDPMScheduler
  • mask conditioning through concatenated input channels: noisy_x, observed_x, and observed_mask

Model Size

  • Parameters: 41,556,501
  • Weight dtype: float32
  • Weight file: diffusion_pytorch_model.safetensors
  • Weight file size: approximately 166 MB

Data

  • Source dataset: Duyu/Time-Series-Forecasting-Benchmark-Datasets
  • Source file: Weather.csv
  • Numeric channels detected: 21
  • Window length: 256
  • Stride: 4
  • Split: time-ordered 80% train / 10% validation / 10% test
  • Normalization: z-score fitted only on the train split

Detected channels:

[
  "feature_00",
  "feature_01",
  "feature_02",
  "feature_03",
  "feature_04",
  "feature_05",
  "feature_06",
  "feature_07",
  "feature_08",
  "feature_09",
  "feature_10",
  "feature_11",
  "feature_12",
  "feature_13",
  "feature_14",
  "feature_15",
  "feature_16",
  "feature_17",
  "feature_18",
  "feature_19",
  "feature_20"
]

Training

{
  "dataset_repo": "Duyu/Time-Series-Forecasting-Benchmark-Datasets",
  "dataset_file": "Weather.csv",
  "model_repo_id": "kyLELEng/weather-scenario-diffusion-1d",
  "output_dir": "/tmp/weather-scenario-diffusion-1d",
  "window_length": 256,
  "stride": 4,
  "max_train_steps": 8000,
  "train_batch_size": 128,
  "eval_batch_size": 128,
  "num_workers": 8,
  "learning_rate": 0.0002,
  "weight_decay": 0.01,
  "grad_clip_norm": 1.0,
  "num_train_timesteps": 1000,
  "eval_every": 1000,
  "save_every": 2000,
  "num_eval_batches": 12,
  "sample_inference_steps": 80,
  "sample_count": 24,
  "mixed_precision": "bf16",
  "seed": 42,
  "model_size": "large",
  "smoke_test": false
}

The training objective is noise prediction:

MSE(predicted_noise, true_noise)

Known observed regions are provided as conditioning input. The loss is weighted toward unknown/masked regions so the model learns conditional reconstruction as well as unconditional generation.

Evaluation

{
  "future_mask_mse_zspace": 0.16154611110687256,
  "channel_inpainting_mse_zspace": 0.10761465132236481,
  "generated_real_correlation_mae": 0.3473077408348441,
  "abs_autocorrelation_mae": 0.6126329355779511,
  "real_distribution": {
    "mean": [
      0.5322151780128479,
      -1.3601813316345215,
      -1.3809949159622192,
      -0.8077001571655273,
      1.2566546201705933,
      -1.078983187675476,
      -0.829918384552002,
      -0.8582332134246826,
      -0.8346444964408875,
      -0.8351123929023743,
      1.3949605226516724,
      -0.010310296900570393,
      -0.5439239740371704,
      0.03890685364603996,
      -0.1013171598315239,
      -0.2349442094564438,
      -0.5373658537864685,
      -0.5422216653823853,
      -0.48122739791870117,
      -1.287260890007019,
      0.09792334586381912
    ],
    "std": [
      0.07429111748933792,
      0.35871678590774536,
      0.35377517342567444,
      0.24259121716022491,
      0.41319674253463745,
      0.18131689727306366,
      0.17187191545963287,
      0.13253048062324524,
      0.1699266880750656,
      0.17053960263729095,
      0.35085079073905945,
      0.015412000007927418,
      0.3774285912513733,
      0.5294230580329895,
      3.1814274734642822e-06,
      1.0341267625335604e-05,
      0.2504253685474396,
      0.24686115980148315,
      0.20216289162635803,
      0.3868575692176819,
      0.03018086589872837
    ],
    "q05": [
      0.36811354756355286,
      -1.7627040147781372,
      -1.7786728143692017,
      -1.1219414472579956,
      0.425606906414032,
      -1.2679648399353027,
      -1.0427569150924683,
      -0.9597867131233215,
      -1.0451189279556274,
      -1.0457327365875244,
      0.82159823179245,
      -0.029127197340130806,
      -1.0400943756103516,
      -0.9979122877120972,
      -0.10131397843360901,
      -0.23493386805057526,
      -0.6634758114814758,
      -0.670289933681488,
      -0.58597731590271,
      -1.7917370796203613,
      0.057487256824970245
    ],
    "q50": [
      0.5404008626937866,
      -1.4684869050979614,
      -1.4889553785324097,
      -0.8586000204086304,
      1.4287834167480469,
      -1.144168734550476,
      -0.872648298740387,
      -0.9205341339111328,
      -0.8782141208648682,
      -0.8781652450561523,
      1.5059175491333008,
      -0.0145594272762537,
      -0.6258403658866882,
      0.1368420273065567,
      -0.10131397843360901,
      -0.23493386805057526,
      -0.6634758114814758,
      -0.670289933681488,
      -0.58597731590271,
      -1.4187328815460205,
      0.093950055539608
    ],
    "q95": [
      0.638533353805542,
      -0.761028528213501,
      -0.794667661190033,
      -0.35279181599617004,
      1.6108952760696411,
      -0.766464352607727,
      -0.49462929368019104,
      -0.5979806184768677,
      -0.5036054253578186,
      -0.5011382699012756,
      1.7932209968566895,
      0.014986473135650158,
      0.06979382783174515,
      0.5976912975311279,
      -0.10131397843360901,
      -0.23493386805057526,
      0.027409523725509644,
      -0.0009677457856014371,
      -0.06447356939315796,
      -0.6893876194953918,
      0.1492983102798462
    ]
  },
  "generated_distribution": {
    "mean": [
      0.10389683395624161,
      0.2204890251159668,
      0.19250470399856567,
      0.23873503506183624,
      0.01685507781803608,
      0.12124405056238174,
      0.29270878434181213,
      0.05499983951449394,
      0.22790412604808807,
      0.2170621007680893,
      -0.18708543479442596,
      0.021801194176077843,
      -0.030199257656931877,
      0.1692427545785904,
      -0.08117542415857315,
      -0.09455308318138123,
      0.06154454126954079,
      0.028043851256370544,
      0.12692318856716156,
      0.24798017740249634,
      0.017302973195910454
    ],
    "std": [
      0.2767521142959595,
      0.3012436330318451,
      0.2993737757205963,
      0.30074891448020935,
      0.3890363872051239,
      0.3219568431377411,
      0.3009476661682129,
      0.37483009696006775,
      0.30024605989456177,
      0.304373562335968,
      0.2866939902305603,
      0.19090980291366577,
      0.41177040338516235,
      0.398755818605423,
      0.19313617050647736,
      0.23614700138568878,
      0.4057450592517853,
      0.40770408511161804,
      0.407763808965683,
      0.31721681356430054,
      0.20663630962371826
    ],
    "q05": [
      -0.3517603576183319,
      -0.2666028141975403,
      -0.2890886068344116,
      -0.25566428899765015,
      -0.6129659414291382,
      -0.38257062435150146,
      -0.19731372594833374,
      -0.5293506979942322,
      -0.24754241108894348,
      -0.2712758183479309,
      -0.6728720664978027,
      -0.2995768189430237,
      -0.6813194751739502,
      -0.5154849290847778,
      -0.36515557765960693,
      -0.429704487323761,
      -0.5263148546218872,
      -0.5553821921348572,
      -0.49782344698905945,
      -0.2676949203014374,
      -0.3324751853942871
    ],
    "q50": [
      0.10788173228502274,
      0.21172723174095154,
      0.18094468116760254,
      0.2328486293554306,
      0.0098641999065876,
      0.10586627572774887,
      0.28131914138793945,
      0.0327904112637043,
      0.21327275037765503,
      0.20810022950172424,
      -0.18645159900188446,
      0.026983173564076424,
      -0.0433419793844223,
      0.16982388496398926,
      -0.09749776124954224,
      -0.12292205542325974,
      0.010389605537056923,
      -0.036815427243709564,
      0.09912104904651642,
      0.23998694121837616,
      0.019317764788866043
    ],
    "q95": [
      0.5557213425636292,
      0.7389823198318481,
      0.7046443223953247,
      0.7413685321807861,
      0.6779510974884033,
      0.6939223408699036,
      0.8154580593109131,
      0.7213369011878967,
      0.7498506903648376,
      0.7366548776626587,
      0.28038161993026733,
      0.3271234333515167,
      0.6884999871253967,
      0.8387558460235596,
      0.25787827372550964,
      0.31810709834098816,
      0.8252443671226501,
      0.8010784387588501,
      0.8797050714492798,
      0.7847591042518616,
      0.34978875517845154
    ]
  },
  "real_abs_autocorr_lag1": [
    0.9877822900516616,
    0.9904621143737528,
    0.9903800119819881,
    0.9930759612361029,
    0.9845821075186362,
    0.9896354175342961,
    0.9931532651062824,
    0.9829303354664611,
    0.9930693669171041,
    0.9931078152703652,
    0.9904251617511753,
    0.6185269686957802,
    0.8362734986319137,
    0.5482885824237015,
    NaN,
    NaN,
    0.9654974645960943,
    0.97213405366258,
    0.9692365984881656,
    0.9926912520502599,
    0.9674985063407219
  ],
  "generated_abs_autocorr_lag1": [
    0.1746959775402206,
    0.43644415022477073,
    0.41653727634920873,
    0.39331193400821807,
    0.3961014770471717,
    0.415143957195966,
    0.4382806229222112,
    0.4055025998367542,
    0.447771283348962,
    0.4445783266695078,
    0.35184174376495303,
    0.018016469082830094,
    0.02088415221893785,
    0.07700486234712257,
    0.016226235857376443,
    0.06005403603427778,
    0.40116921177080017,
    0.41265325284010024,
    0.37372374982861106,
    0.48624188538979995,
    0.008822063729828335
  ],
  "training_history": [
    {
      "step": 1000,
      "train_loss": 0.07410214841365814,
      "validation_denoising_loss": 0.05256535982092222
    },
    {
      "step": 2000,
      "train_loss": 0.047588951885700226,
      "validation_denoising_loss": 0.062365236381689705
    },
    {
      "step": 3000,
      "train_loss": 0.04786738008260727,
      "validation_denoising_loss": 0.08261810739835103
    },
    {
      "step": 4000,
      "train_loss": 0.030978742986917496,
      "validation_denoising_loss": 0.09854291876157124
    },
    {
      "step": 5000,
      "train_loss": 0.017614271491765976,
      "validation_denoising_loss": 0.11429651578267415
    },
    {
      "step": 6000,
      "train_loss": 0.022595474496483803,
      "validation_denoising_loss": 0.11743361999591191
    },
    {
      "step": 7000,
      "train_loss": 0.0207576435059309,
      "validation_denoising_loss": 0.12093404183785121
    },
    {
      "step": 8000,
      "train_loss": 0.018115710467100143,
      "validation_denoising_loss": 0.11552448819080989
    }
  ],
  "best_validation_denoising_loss": 0.05256535982092222,
  "final_step": 8000
}

Evaluation is based on held-out windows and includes:

  • validation denoising loss
  • future-mask inpainting MSE
  • channel-inpainting MSE
  • generated-vs-real distribution statistics
  • cross-channel correlation matrix error
  • absolute-value autocorrelation error

Intended Use

This model is for research and demonstration of multivariate time-series diffusion. It is not a production forecasting system.

Files

  • config.json: 1D U-Net model configuration
  • diffusion_pytorch_model.safetensors: model weights
  • scheduler/scheduler_config.json: DDPM scheduler configuration
  • preprocess_config.json: dataset, split, normalization, window, and channel metadata
  • normalization_stats.json: train-split mean and standard deviation
  • evaluation_report.json: held-out evaluation metrics
  • sample_plots/: generated examples and conditional samples
Downloads last month
20
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train kyLELEng/weather-scenario-diffusion-1d

Evaluation results