franch commited on
Commit
39d3c0f
·
verified ·
1 Parent(s): 1eb894d

Upload ConvGRU-Ensemble model

Browse files
Files changed (3) hide show
  1. README.md +82 -0
  2. config.json +23 -0
  3. model.ckpt +3 -0
README.md ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: bsd-2-clause
3
+ language: en
4
+ tags:
5
+ - weather
6
+ - nowcasting
7
+ - radar
8
+ - precipitation
9
+ - ensemble-forecasting
10
+ - convgru
11
+ - earth-observation
12
+ library_name: pytorch
13
+ pipeline_tag: image-to-image
14
+ ---
15
+
16
+ # IRENE — Italian Radar Ensemble Nowcasting Experiment
17
+
18
+ **IRENE** is a ConvGRU encoder-decoder model for short-term precipitation forecasting (nowcasting) from radar data. The model generates probabilistic ensemble forecasts, producing multiple plausible future scenarios from a single input sequence.
19
+
20
+ ## Model Description
21
+
22
+ - **Architecture**: ConvGRU encoder-decoder with PixelShuffle/PixelUnshuffle for spatial scaling
23
+ - **Input**: Sequence of past radar rain rate fields (T, H, W) in mm/h
24
+ - **Output**: Ensemble of future rain rate forecasts (E, T, H, W) in mm/h
25
+ - **Temporal resolution**: 5 minutes per timestep
26
+ - **Training loss**: Continuous Ranked Probability Score (CRPS) with temporal consistency regularization
27
+
28
+ The model encodes past radar observations into multi-scale hidden states using stacked ConvGRU blocks with PixelUnshuffle downsampling. The decoder generates forecasts by unrolling with different random noise inputs, producing diverse ensemble members that capture forecast uncertainty.
29
+
30
+ ## Intended Uses
31
+
32
+ - Short-term precipitation forecasting (0-60 min ahead) from radar reflectivity data
33
+ - Probabilistic nowcasting with uncertainty quantification via ensemble spread
34
+ - Research on deep learning for weather prediction
35
+ - Fine-tuning on regional radar datasets
36
+
37
+ ## How to Use
38
+
39
+ ```python
40
+ from convgru_ensemble import RadarLightningModel
41
+
42
+ # Load from HuggingFace Hub
43
+ model = RadarLightningModel.from_pretrained("it4lia/irene")
44
+
45
+ # Run inference on past radar data (rain rate in mm/h)
46
+ import numpy as np
47
+ past = np.random.rand(6, 256, 256).astype(np.float32) # 6 past timesteps
48
+ forecasts = model.predict(past, forecast_steps=12, ensemble_size=10)
49
+ # forecasts.shape = (10, 12, 256, 256) — 10 ensemble members, 12 future steps
50
+ ```
51
+
52
+ ## Training Data
53
+
54
+ Trained on the Italian DPC (Dipartimento della Protezione Civile) radar mosaic surface rain intensity (SRI) dataset, covering the Italian territory at ~1 km resolution with 5-minute temporal resolution.
55
+
56
+ ## Training Procedure
57
+
58
+ - **Optimizer**: Adam (lr=1e-4)
59
+ - **Loss**: CRPS with temporal consistency penalty (lambda=0.01)
60
+ - **Batch size**: 16
61
+ - **Ensemble size during training**: 2 members
62
+ - **Input window**: 6 past timesteps (30 min)
63
+ - **Forecast horizon**: 12 future timesteps (60 min)
64
+ - **Data augmentation**: Random rotations and flips
65
+ - **NaN handling**: Masked loss for missing radar data
66
+
67
+ ## Limitations
68
+
69
+ - Trained on Italian radar data; performance may degrade on other domains without fine-tuning
70
+ - 5-minute temporal resolution only
71
+ - Best suited for convective and stratiform precipitation; extreme events may be underrepresented
72
+ - Ensemble spread is generated via noisy decoder inputs, not a full Bayesian approach
73
+
74
+ ## Acknowledgements
75
+
76
+ This model was developed as part of the **Italian AI-Factory** (IT4LIA), an EU-funded initiative supporting the adoption of AI across SMEs, academia, and public/private sectors. The AI-Factory provides free HPC compute, consultancy, and AI-ready datasets. This work showcases capabilities in the **Earth (weather and climate) vertical domain**.
77
+
78
+ Developed at **Fondazione Bruno Kessler (FBK)**, Trento, Italy.
79
+
80
+ ## License
81
+
82
+ BSD 2-Clause License
config.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "input_channels": 1,
3
+ "forecast_steps": 12,
4
+ "num_blocks": 5,
5
+ "ensemble_size": 10,
6
+ "noisy_decoder": true,
7
+ "loss_class": "crps",
8
+ "loss_params": {
9
+ "temporal_lambda": 0.01
10
+ },
11
+ "masked_loss": false,
12
+ "optimizer_class": "<class 'torch.optim.adam.Adam'>",
13
+ "optimizer_params": {
14
+ "lr": 0.0001,
15
+ "fused": true
16
+ },
17
+ "lr_scheduler_class": "<class 'torch.optim.lr_scheduler.ReduceLROnPlateau'>",
18
+ "lr_scheduler_params": {
19
+ "mode": "min",
20
+ "factor": 0.5,
21
+ "patience": 10
22
+ }
23
+ }
model.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:58df5c2d43e131b632ec9cf41e66465b7c7167202a851a4aaa84951308f74699
3
+ size 770192441