--- license: cc-by-nc-sa-4.0 language: - en metrics: - r_squared library_name: keras tags: - Climate - SDL-radiation - CNN - BiLSTM - Time-Series model-index: - name: SDL Prediction Model results: - task: type: spatio-temporal-forecasting dataset: type: weather name: CLARA-dataset metrics: - name: R2 type: r2 value: 0.8204 --- ## 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` - **Metadata:** - Initial sequence: `metadata/initial_X_sequence_for_forecast.npy` - Model metadata: `metadata/model_metadata.json` - **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: 1. **Load the Model and Artifacts:** - Load `model.keras` using 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's `pickle` and `json` modules. - Load the initial input sequence (`metadata/initial_X_sequence_for_forecast.npy`) using NumPy. 2. **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. 3. **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²). 4. **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](https://github.com/RakshitRabugotra/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](https://creativecommons.org/licenses/by-nc-sa/4.0/). --- ### 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.