SDL Prediction Model
This repository contains a deep learning model for forecasting Surface Downward Longwave Radiation (SDL) using a hybrid CNN-BiLSTM architecture. The model is trained on the CLARA dataset and is designed for monthly grid-based predictions over India.
Model Overview
- Model Type: Convolutional Neural Network + Bidirectional LSTM (CNN-BiLSTM)
- Version: 1.0 (r2-0.8204)
- Input Shape: 12 timesteps Γ 140 Γ 140 grid Γ 4 channels
- Channels:- sdlr_value
- year_channel
- month_sin_channel
- month_cos_channel
 
- Model File: model.keras
- Scalers:- Input: scalers/input_scalers.pkl
- Output: scalers/y_scaler.pkl
 
- Input: 
- Metadata:- Initial sequence: metadata/initial_X_sequence_for_forecast.npy
- Model metadata: metadata/model_metadata.json
 
- Initial sequence: 
- Model Metrics- MSE: 0.0099
- MAE: 0.0744
- RMSE: 0.0995
- R2: 0.8204
- MAE (Original SDL Units): 27.88 W/mΒ²
- RMSE (Original SDL Units): 37.26 W/mΒ²
 
Dataset
- Name: CLARA-dataset
- Description: SDL - Surface downward longwave radiation
- Temporal Resolution: Monthly
- Spatial Resolution: 0.25Β° Γ 0.25Β° grid (140 Γ 140)
- Temporal Coverage: - Start: 1979-01-01
- End: 2025-06-01
 
- Geographic Coverage:- Latitude: 5.0Β°N to 40.0Β°N
- Longitude: 65.0Β°E to 100.0Β°E
 
Repository Structure
βββ config.json                # Model and dataset configuration
βββ LICENSE                    # License (CC BY-NC-SA 4.0)
βββ model.keras                # Trained model 
βββ metadata/
β   βββ initial_X_sequence_for_forecast.npy
β   βββ model_metadata.json
βββ scalers/
β   βββ input_scalers.pkl
β   βββ y_scaler.pkl
Usage
This repository provides the trained model and all necessary artifacts (scalers, metadata, initial input sequence) for SDL prediction, but does not include the inference code.
To use the model for inference:
- Load the Model and Artifacts: - Load model.kerasusing Keras:tf.keras.models.load_model('model.keras').
- Load the scalers (scalers/input_scalers.pkl,scalers/y_scaler.pkl) and metadata (metadata/model_metadata.json) using Python'spickleandjsonmodules.
- Load the initial input sequence (metadata/initial_X_sequence_for_forecast.npy) using NumPy.
 
- Load 
- Prepare Input Data: - Prepare a 12-month sequence of input data as a 4D array: (TIMESTEPS, height, width, n_channels).
- Use the provided scalers to normalize input features.
 
- Prepare a 12-month sequence of input data as a 4D array: 
- Perform Prediction: - Pass the input sequence to the model to obtain predictions for future SDL values.
- For rolling forecasts, update the input sequence with each new prediction and repeat as needed.
- Use the output scaler to inverse-transform predictions to original units (W/mΒ²).
 
- Postprocess Results: - Map predictions to the desired grid points using the latitude and longitude grids from the metadata.
 
Note:
- An implementation of this model is used in the project Solarwise repository.
License
This project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0). See the LICENSE file for details or visit this website.
Citation
If you use this model or code, please cite appropriately and respect the license terms.
Contact
For questions or collaboration, please open an issue or contact the repository maintainer.
- Downloads last month
- 4