问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

LSTM降雨径流模型

创作时间:
作者:
@小白创作中心

LSTM降雨径流模型

引用
CSDN
1.
https://blog.csdn.net/qq_54910989/article/details/145355374

LSTM(长短期记忆网络)是一种特殊的循环神经网络(RNN),特别适用于处理时间序列数据。本文将介绍如何使用LSTM模型进行降雨径流模拟,包括深度学习的基本看法、LSTM的原理、实战案例的详细步骤以及实战成果展示。

LSM降雨日径流模拟

对深度学习的看法

现阶段无论什么深度学习模型,都没有真正揭示其背后的机理,但是效果已经被实践检验非常强大(如ChatGPT、豆包、AI换脸等)。对于深度学习模型,我们可以将其理解为一个非常强大的函数,这个函数我们不需要知道表达式是什么,但是我们知道这个函数的一大堆输入和输出后,这个函数就可以训练出来,并且在你下次输入后,就可以很好的预测输出。(注意,这里讲的是有监督类型,现阶段绝大多数模型都是有监督的,即需要传入标签数据,比如我们做图像识别,狗狗的图片需要打上标签“狗”,这也是很多我们登录一些网站进行验证时在做的事情,就是帮网站提供标签数据)。

深度学习不是计算机和AI的专属,它是一个数学方法、工具,可以应用于各行各业。我们会用它、会调它,就够了,至于是CNN、LSTM还是Transformer,背后的数学机理我们并不需要知道太多,知道怎么用于我们的数据,帮助解决我们的问题才是最重要的。

深度学习的使用

  1. 建议使用Pytorch,之前用过tensorflow和keras,Pytorch可以让我们对训练过程的理解更深刻,不过入门比其他两种门槛要高一点,但网上资源非常丰富
  2. 所有模型的使用,最关键的是模型的输入和输出(这里还是以有监督为例,绝大多数深度学习模型都是有监督的)
  3. 调参是一个技巧非常强的活,但其实究竟能调多好谁也不好说,最开始入门建议使用网格搜索就够了,后面可以用Optuna等框架

LSTM简介

长短期记忆网络(LSTM,Long Short-Term Memory)是一种特殊的循环神经网络(RNN),专为解决传统RNN在处理长序列数据时易出现的梯度消失或爆炸问题而设计。LSTM通过引入记忆单元和门控机制(输入门、遗忘门和输出门),能够有效捕获时间序列中的长期依赖关系。这使其在处理时间序列数据(如气象、径流、水文等领域)方面具有显著优势。

在水文领域,LSTM首次被用于径流预测时,即显示出了其巨大的应用潜力和科学价值。例如,Kratzert等人在2018年发表的开创性研究,首次系统性地将LSTM应用于径流预测任务,通过对美国流域大规模数据的验证,证明了LSTM模型能够显著提高流域日径流模拟的精度。相比于传统的水文模型(如SAC-SMA、GR4J等),LSTM不仅能够更好地拟合复杂的非线性关系,还无需依赖于精细的流域物理特性数据。这一研究不仅开辟了基于深度学习的水文建模新方向,还为实现数据驱动的精准径流预测提供了新工具。

随着LSTM的成功应用,更多学者在水文领域扩展了其应用范围,如水质预测、地下水位模拟和降水径流转换等。LSTM的强大能力表明,它能够突破传统水文模型的限制,为水资源管理和防洪减灾等领域提供更加可靠的技术支持。

认识LSTM网络

参考文章:https://colah.github.io/posts/2015-08-Understanding-LSTMs/ 虽然是英文,但是把LSTM结构讲的非常详细,可以使用翻译

感性理解(这里把绿色的框中的内容称为细胞):

  1. x指的是不同时间步的输入数据
  2. LSTM特殊的结构在于长期记忆(cn,最上面一条横线传递,贯穿所有细胞)和短期记忆(hn,下面的横线传递,只传入上一个细胞)
  3. 通过LSTM特殊的门控机制,每个细胞都会有隐层输出,对应最上面的ht,隐层可以有多层(比如向上叠加几层),但ht只会在最上面的隐层输出
  4. 看不太懂也没关系,如何具体使用LSTM模型,案例非常清晰,会套用和照搬就够了

实战介绍

目标:27年日径流数据预报

类型:典型的时序数据预测,类似的问题还有:逐日/月/年的气温降水预测、每日/分钟股价预测等等这类问题,完全通用

思路:

  1. 采用站点和流域内15个气象站的前3天数据,即前3天的本站径流和15个气象站的数据预测未来1d的径流量
  2. 划分训练期和测试期,制作训练期和测试期的样本和标签(非常关键,这部分会详细讲解,因为如前所说,深度学习模型能够跑通最重要的就是输入和输出)
  3. 对训练期和测试期数据分别进行归一化
  4. 使用DataLoader加载训练集和测试集(设置batch_size,由于内存容量的限制,不可能一次处理整个训练数据集。通过使用 batch size,可以确保每次迭代中使用的样本数量适合可用的内存。基本上所有的深度学习模型都会使用)
  5. 网络定义和训练,采用网格搜索法,记录每种参数方案的表现
  6. 找到最优模型参数,训练最优模型,在测试期数据集上进行预测
  7. 计算性能指标,本文可以定义的函数可以计算出rmse, mae, r_squared, nse, pbias 5种指标
  8. 结果可视化,代码提供了散点图和降雨径流过程图

实战成果

  1. 可以自动计算各项指标
  2. 绘制观测-模拟散点拟合图

  1. 绘制降雨径流过程线图(分训练期和测试期)

数据和代码获取

文章付费后,直接获取.ipynb代码文件和使用数据,代码文件可按顺序直接运行(前提是相关环境已经配置好,安装下面几个包即可),附赠代码实战运行过程视频。

本文使用到的包有:

torch,matplotlib,numpy,pandas,sklearn

文章链接:链接:link

实战代码逐一讲解

文章内查看。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号