基于 CNN+LSTM 的全国年度降水预测实践
在气象预测中,长期降水预测一直是核心问题。除了传统 ConvLSTM,本项目尝试使用 CNN+LSTM 方法,对全国年度降水栅格进行预测(2025--2027 年),并严格保证预测在研究区内。
1. 项目背景
- 输入数据:2000--2024 年全国降水年度栅格(每张 TIFF 一年)
- 预测目标:2025--2027 年未来三年降水
- 研究要求 :
- 预测严格限制在研究区
- 第一年的预测值合理,不受 nodata 或边缘干扰
CNN+LSTM 架构能同时处理栅格的空间信息(CNN 提取空间特征)和时间依赖(LSTM 处理年度序列),适合年度降水预测。
2. 数据处理
-
读取 TIFF 栅格
- 每个像素表示全年降水
- nodata 或无效像素用 0 或邻近平均填充
- 生成研究区 mask
-
归一化
- 仅对研究区有效像素计算均值和标准差
- 保证模型输入不受无效区域影响
-
空间特征提取
- 使用 CNN 对每张年度栅格提取低维特征向量
- 特征向量作为 LSTM 输入序列
-
训练/验证划分
- 训练集:2000--2020
- 验证集:2021--2024
- 输出预测 2025--2027
3. 模型架构
(1) CNN Encoder
- 输入:年度栅格
[H, W] - 输出:低维空间特征
[C] - 结构:
- 3 层卷积 + ReLU + BatchNorm
- 全局平均池化输出向量
(2) LSTM 时间建模
- 输入序列长度:
INPUT_STEPS年 - 每步输入:CNN 提取的特征向量
- 输出:未来
OUTPUT_STEPS年特征向量
(3) Decoder
- 将 LSTM 输出向量通过反卷积或全连接还原为栅格
[H, W] - 预测结果仅在研究区 mask 内有效,区域外填 nodata
(4) 损失函数
python
MaskedHybridLoss = 0.7*MSE + 0.3*MAE # 对降水极值加权
- 可选加入 SSIM / 梯度损失增强空间结构
4. 训练策略
-
优化器:AdamW + CosineAnnealingLR
-
训练轮次:50--100 epoch
-
批量大小:根据显存调整
-
验证集监控:训练损失 vs 验证损失
-
GPU 管理:
- 训练结束
torch.cuda.empty_cache() - Windows 下 DataLoader 设置
num_workers=0
- 训练结束
5. 预测流程
- 对最后
INPUT_STEPS年数据提取 CNN 特征 - LSTM 预测未来
OUTPUT_STEPS年特征 - Decoder 还原栅格
- patch 重建或整图预测
- 应用研究区 mask,输出 TIFF
6. 结果与经验
-
第一年预测值偏小:
- 原因:最后一年输入 nodata 多或均值偏低
- 解决:使用有效区域均值填充 nodata
-
预测模糊:
-
原因:MSE 平滑 + patch 高斯融合
-
解决:
- 增大模型容量
- 调整 patch 尺寸
- 加入 SSIM / 边缘损失
-
-
研究区控制:
- 重建和输出均严格在研究区 mask 内
- 确保 GIS 可直接使用
7. 技术栈
- Python 3.11
- PyTorch 2.5
- Rasterio 1.4
- Numpy、Scipy、TQDM
- GPU 可选
8. 代码示意
python
# CNN+LSTM 预测流程示意
features = []
for t in range(INPUT_STEPS):
x = current_input[t] * valid_area_mask
feat = cnn_encoder(x.unsqueeze(0).unsqueeze(0))
features.append(feat)
features = torch.stack(features, dim=0) # [T, C]
lstm_out = lstm(features.unsqueeze(1)) # [OUTPUT_STEPS, C]
preds = decoder(lstm_out) # [OUTPUT_STEPS, H, W]
preds[:, ~valid_area_mask] = nodata_value
save_tiff(preds, output_folder)
9. 改进方向
- 多变量输入:温度、湿度、风场辅助特征
- 多分辨率 CNN 提升局地细节捕获
- Transformer 或 GAN 架构提高预测清晰度
- 数据增强:旋转、翻转、邻域插值
10. 总结
- CNN+LSTM 可以有效建模年度栅格降水的空间和时间模式
- 使用研究区 mask 确保预测区域正确
- nodata 填充和 patch 重建优化保证第一年预测值合理
- 可结合 SSIM / 边缘损失提升预测空间细节
关键词:CNN、LSTM、降水预测、年度栅格、研究区 mask、深度学习