基于Python实现的深度学习技术在水文水质领域应用

news2024/11/25 3:00:38

目录

一、深度学习的基本概念和发展现状

二、Python系列开源软件包基本用法

三、前馈神经网络模型、原理和代码实现

四、前馈神经网络模型在水质、水位预测中的应用

五、卷积神经网络模原理、结构和应用,与支持向量机进行比较

六、循环神经网络原理与结构

七、循环神经网络在水质综合评价和水文预报中的应用

更多模型


当前,深度学习作为人工智能的热门技术发展迅速,以其强大的非线性和不确定性处理能力在图像识别、语音识别、自然语言处理等领域取得了显著的成效。它是一种端到端的处理方法,在训练算法的指导下,深层神经网络自发地从原始数据中进行抽象,提炼关键特征,对结果做出预报,中间过程不需要人工干预,尤其适合解决样本和结论容易获取但样本导致结论的原因难以清晰界定的问题。

水质综合评价和预测是水环境科学的重要研究内容,它以定量特征直观地描述水环境质量的状态,在此基础上开展对当前水质的综合评价和未来一段时间内水质状态的预测。在水质评价方面,传统方法主要有综合指数法、模糊综合评价法、灰色模式识别法等,这些方法都包含了一些主观因素,如隶属度函数和各指标的权重等,导致结果具有一定的主观性,适用性不强;在水质预测方面,传统方法主要有线性回归法、灰色模型预测法等,这些方法都不能很好地反应数据之间的内在关联和时间序列特征,在实际中预测效果欠佳。水文预报是防汛抗旱决策、水资源综合利用、生态环境保护以及水利水电工程运行管理的重要依据,它根据前期和现时已知的水文气象资料,对未来一定时间水文要素的状态作出定量的预测。传统方法主要研究流域产汇流以及洪水传播的原理进行预报,但是实际情况复杂,简化后的数学模型往往难以获取足够详细的数据或者存在较大的系统性误差。在水文水质领域,基于神经网络的深度学习方法则能弥补上述不足,它能自动寻找输入和输出数据之间的内在关联,不需要人工显式地给出原理,直接由算法在数据中学习评价和预测规则,适合当前大数据背景下的多种应用,且近年来深度学习技术在水文水质领域亦取得了丰硕的研究成果。

【目标】:
1、深度学习的基本概念和发展现状
2、Numpy、Matplotlib、Openpyxl、TensorFlow、scikit-learn、cv2和PIL的基本用法
3、前馈神经网络基本原理和模型结构
4、前馈神经网络在水位预测、水质预测中的应用
5、卷积神经网络基本原理和模型结构、支持向量机原理
6、卷积神经网络和支持向量机在水质综合评价中的应用
7、循环神经网络基本原理和模型结构
8、循环神经网络在水质预测和水文预报中的应用
9、综合案例:水动力学难题之一的大型水库水位计算问题

一、深度学习的基本概念和发展现状

介绍深度学习的基本原理、应用领域、当前取得的进展。

1.1 深度学习的基本原理:从生物网络到人工神经网络

一个生物神经元就是一个可以接受、发射脉冲信号的细胞。树突接受其他神经元的脉冲信号,而轴突将输出脉冲传递给其他神经元。人工神经元是把一个神经元看做一个计算单元,对输入进行线性组合,然后通过一个非线性的激活函数作为输出。人工神经网络是对生物神经元的一种模拟,用数值方法模拟人的思维过程。深度学习以人工神经网络为基础,通过构建一个多层的表示学习结构,使用一系列非线性变换操作把从原始数据中提取的简单特征进行组合,从而得到更高层、更抽象的表示。

1.2 应用领域

目前在语音、图像、视频、自然语言处理等通用领域发展迅速,在垂直领域,如医药、金融、法律和水文水资源领域有一定的应用。

1.3 当前取得的进展

1.4 在水文水质领域的应用

随着信息技术的发展,近十几年来,我国各大流域累计的水文、气象、水环境数据逐渐增多,许多学者和研究人员开始意识到这些数据的潜在价值,纷纷开展基于深度学习模型的水文预报、水质评价和预测的研究,目前也取得了丰硕的成果。

二、Python系列开源软件包基本用法

Python广受研究人员和工程人员欢迎的重要原因是可以轻量级运行,以及具有非常广泛的第三方开源软件包的支持。本次课程主要介绍基于python的机器学习软件包基本用法。

2.1 Python基础
(1)元组、列表、字典数据类型的定义和基本用法
(2)Python中字符串的处理和数据类型转换
(3)Python读取和写入文本文件方法

2.2 Numpy基本用法
(1)Numpy数组的概念和定义方法
(2)数组数据的访问方法
(3)Numpy中随机数生成、常用的线性代数计算函数
(4)Numpy中文本文件、二进制文件的读取和保存

2.3 Matplotlib基本用法
Matplotlib基本绘图、子图划分、双坐标轴绘图以及颜色、标记、线型、刻度、标签、注解的设置等。

2.4 Openpyxl处理Excel基本用法
(1)加载和保存Excel文件的方法
(2)获取Excel中的数据
(2)读取和写入Excel文件

2.5 scikit-learn
scikit-learn是机器学习中封装好的包,本次课程主要介绍支持向量机和决策树的调用方法。

2.6 TensorFlow基本用法
(1)算子、数据流、张量、占位符、变量基本概念
(2)TensorFlow的应用实例
(3)TensorBoard过程可视化的用法

2.7 cv2、PIL基本用法
(1)读取图片数据
(2)图片和矩阵之间的转换
(3)图片可视化

三、前馈神经网络模型、原理和代码实现

借助前馈神经网络介绍深度学习有关的基本概念和数学基础,并使用TensorFlow实现通用前馈神经网络模型架构。

3.1 前馈神经网络原理与结构

(1)数据集的划分:训练集、测试集、验证集;

(2)激活函数:sigmoid函数、双曲正切函数tanh、修正线性单元ReLU;

(3)Softmax分类器:分类器通常放在网络的最后一层;

(4)目标函数:衡量预测和实测结果之间差异的函数,通过目标函数进行优化得出模型参数。

(5)正则项:防止模型过拟合的有效方法。

(6)反向传播算法:计算神经网络梯度的经典算法,在实践中计算时由TensorFlow代劳,无需开发者自己推导公式。

(7)模型训练和参数优化:mini-batch训练策略和梯度下降法。

3.2 基于TensorFlow实现的前馈神经网络模板

基于TensorFlow实现前馈神经网络的基本模板设计,在应用过程中,只需要更换数据集,重新调试参数,基本的模型代码不需修改。

四、前馈神经网络模型在水质、水位预测中的应用

4.1 TensorFlow实现多层前馈神经网络,用于水质预测

绿水青山就是金山银山,在环境保护日益受到政府各部门重视的情况下,水污染尤其是水质状况的发展趋势研究就显得极为重要。本部分使用多层前馈神经网络开展水质预测研究,根据某流域重点河段重点监测点位 1986—1995年 DO 的实际监测值开展实验。使用1986-1994年的检测结果作为训练集,对1995年的值做出预测。

通过本部分的学习,可以深入理解前馈神经网络的原理和基于TensorFlow的实现方法,为后续实现卷积神经网络和循环神经网络打好基础。

4.2 TensorFlow实现多层前馈神经网络,用于水位预测

水库建成以后,为了在枯水期蓄满库容,充分发挥发电效益,通常会减少下泄流量,容易导致下游河道湖泊的来流量减少,引发干旱,导致生态环境问题。本实例研究某水库建成后,其下泄流量与下游某湖泊水位之间的关系,根据水库下泄流量预测湖泊水位。

五、卷积神经网络模原理、结构和应用,与支持向量机进行比较

5.1 卷积操作

5.2 池化操作

5.3 卷积网络的基本结构

5.4 卷积神经网络在水质综合评价中的应用

卷积神经网络主要处理图像类数据。本部分使用的数据集是某地区多个罗非鱼池塘的水样数据,包含水产专家按照水色判断水质分类的数据以及用数码相机按照标准进行水色采集的数据,每个水质图片命名规则为“类别_编号.jpg”。本任务是根据这些图像数据,利用图像处理技术,通过水色图像实现水质的综合评价。本数据集共有203张图片,共5个类别。

5.5 支持向量机的基本原理和应用

介绍支持向量机的原理,并使用5.4中的水色图像数据进行分类,与卷积神经网络进行对比分析。

六、循环神经网络原理与结构

6.1 循环神经网络结构

循环神经网络是最适合时间序列预测任务的模型,在每一步合成计算过程中,它都能够考虑到前面时间节点的信息,非常适合处理水文方面的任务以及研究。图13-15是经典的循环神经网络结构。

6.2 循环神经网络在水质预测中的应用

使用4.1中的数据进行预测,结果如下:

七、循环神经网络在水质综合评价和水文预报中的应用

7.1 循环神经网络在水文预报中的应用

在大型河网中,下游站点的流量通常由上游干、支流控制站点的流量以及区间降雨构成。但由于水雨情的不同,上游站点流量和降雨到达下游站点的时间处于变化中,难以精确测量和计算。本实验借助时间窗口的概念,扩展模型对不同水雨情的适应能力,同时使用RNN和Attention机制在历史数据中挖掘流量传播机制,开展水文预报。具体内容包含以下几个方面:

(1)使用python实现传统的合成流量法;
(2)基于时间窗口概念,使用python实现多维度的合成流量法,并与传统合成流量法进行比较;
(3)构建深度神经网络模型,以各个上游站点的流量过程为模型的输入,结合时间窗口的概念,对下游站点的流量开展预报;
(4)在第(3)步的基础上,增加attention机制,并与(3)中的方法进行比较

在本部分的研究过程中,将详细介绍模型的实现细节,以便使学员能够理解并掌握模型的精髓,能够根据实际问题设计模型,而不是照搬照抄式的套用模型,只有这样才具备一定的创新能力。

7.2 综合案例

水动力学难题之一的大型水库水位计算问题。基于圣维南方程组的水动力学模型是计算大型水库水位的有力方法,然而实际中模型的输入边界(各支流入口流量)难以确定,给计算造成困扰,可以借助深度学习方法解决这一问题。下图是某个大型水库运用水动力学方法计算的水位和深度学习方法计算水位的对比图。


更多模型

●SWAT模型在水文水资源、面源污染模拟中的实践技术应用及典型案例分析
●HSPF(Hydrological Simulation Program Fortran)模型学习
●HYPE分布式水文模型建模方法与案例分析
●HEC-HMS水文模型实践技术应用
●HEC-RAS一维、二维建模方法及应用
●​Delft3D水动力-富营养化模型实践应用​
●基于Delft3D模型的标量输运、波浪、拉格朗日粒子及溢油模型应用
●Delft3D建模、水动力模拟方法及在地表水环境影响评价中的应用
●AQUATOX水环境与水生态模型实践技术应用
●地理信息系统(ArcGIS)在水文水资源、水环境中的应用及案例分析
●基于FVCOM模型的三维水动力、水交换、溢油物质扩散及输运数值模拟
●FVCOM流域、海洋水环境数值模拟方法及应用


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/417764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

web 页面在浏览器运行eval性能分析和优化

公司有个低代码老项目,里面有一些自定义脚本运行使用了大量的eval 动态运行。 分析 网上对eval 的争论也非常激烈,大部分不建议使用,一些人观点是用不好才导致问题。 eval 是否真的存在效率问题? eval is evil 我们知道new Fun…

定时任务-常用的cron表达式

常用cron表达式例子: (1)0/2 * * * * ? 表示每2秒 执行任务 (1)0 0/2 * * * ? 表示每2分钟 执行任务 (1)0 0 2 1 * ? 表示在每月的1日的凌晨2点调整任务 (2)0 15 1…

宝塔设置PHP定时任务实战记录(定时任务、ajax异步刷新API、shell脚本、访问url)

文章目录项目需求生产环境一、php定时任务二、实战开发1.创建mysql数据表2.入库封装函数(1)封装入库(2)入库操作3.定时任务的实现(1)$ajax异步调用法(2)宝塔定时访问url(…

http请求头部(header)详解

通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可 选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个…

OpenShift 4 - 通过 SSH 远程访问 OpenShift Virtualization 的虚拟机

《OpenShift / RHEL / DevSecOps 汇总目录》 说明:本文已经在支持 OpenShift 4.12 的 OpenShift 环境中验证 在《OpenShift 4 - 用 OpenShift Virtualization 运行容器化虚拟机 (视频)》一文中使用了 OpenShift 控制台直接访问运行在 OpenSh…

【Python实战】从架构设计到实现:一个Powerful的图书管理系统

💖 作者简介:大家好,我是Zeeland,全栈领域优质创作者。📝 CSDN主页:Zeeland🔥📣 我的博客:Zeeland📚 Github主页: Undertone0809 (Zeeland) (github.com)&…

栈的压入,栈的弹出,最小栈,用队列实现栈,设计循环队列

栈的压入,栈的弹出 输入两个整数序列,第一个序列表示栈的压入序列,判断第二个序列是否可能是该栈的弹出序列,假设压入栈中的所有数字均不相等,如pushA:1,2,3,4,5是某栈的…

day11 有名管道和无名管道

无名管道基础 进程间的通信 概念: 进程间的通信就是进程和进程之间交换信息; 常用方式: 无名管道(pipe) 有名管道(fifo) 信号(signal) 共享内存(mmap…

DOS批处理文件---内嵌参数变量扩充功能

1 内嵌参数变量 1.1 介绍 内嵌参数变量指:%i,其中i为大于等于0的整数。如%0, %1, %2,... 1.2 作用 可以客制化功能。 1.3 案例 批处理文件:main_Param.bat echo off && setlocal ENABLEDELA…

游戏分析之引擎的基本概念及常见的游戏引擎介绍

一、引擎的基本概念 关于游戏引擎和中间件 过去开发游戏的时候,游戏机生产商提供的只是硬件的规格书和非常基本的“库”。所以,游戏需要的各种程序功能都需要游戏开发团队自己开发。从PC,FC的8位机时代开始,到SFC,MD的…

Java经典笔试题—day01

Java经典笔试题—day01🔎选择题🔎编程题🥝组队竞赛🥝删除公共字符🔎结尾🔎选择题 (1) 在 Java 中,存放字符串常量的对象属于( )类对象。 A. Character B. String C. Str…

类ChatGPT项目的部署与微调(下):从ChatGLM-6b到ChatDoctor

前言 随着『GPT4多模态/Microsoft 365 Copilot/Github Copilot X/ChatGPT插件』的推出,绝大部分公司的技术 产品 服务,以及绝大部分人的工作都将被革新一遍 类似iPhone的诞生 大家面向iOS编程 有了App Store现在有了ChatGPT插件/GPT应用商店&#xff…

Faster-RCNN代码解读5:主要文件解读-上

Faster-RCNN代码解读5:主要文件解读-上 前言 ​ 因为最近打算尝试一下Faster-RCNN的复现,不要多想,我还没有厉害到可以一个人复现所有代码。所以,是参考别人的代码,进行自己的解读。 ​ 代码来自于B站的UP主&#xff…

算法模板(3):搜索(2):bfs与图论基础

bfs 在搜索题中,一般来讲,bfs和dfs都有一个最优选择。 基础bfs 走迷宫 注:这个模板具有还原路径的功能。其实,还可以反向搜(从终点走到起点),就不用 reverse数组了。其实,bfs是不…

Qt Quick - Dialog

Dialog使用总结一、概述二、对话框标题和按钮三、模态对话框四、非模态的对话框五、standardButtons 属性一、概述 对话框是一种弹出式对话框,主要用于短期任务和与用户的简短交流。与ApplicationWindow和Page类似,Dialog被组织成三个部分:header、cont…

PyTorch深度学习实战 | 基于线性回归、决策树和SVM进行鸢尾花分类

鸢尾花数据集是机器学习领域非常经典的一个分类任务数据集。它的英文名称为Iris Data Set,使用sklearn库可以直接下载并导入该数据集。数据集总共包含150行数据,每一行数据由4个特征值及一个标签组成。标签为三种不同类别的鸢尾花,分别为&…

【AI帮我写代码,上班摸鱼不是梦】手摸手图解CodeWhisperer的安装使用

IDEA插件 除了借助ChatGPT通过问答的方式生成代码,也可以通过IDEA插件在写代码是直接帮助我们生成代码。 目前,IDEA插件有CodeGeeX、CodeWhisperer、Copilot。其中,CodeGeeX和CodeWhisperer是完全免费的,Copilot是收费的&#x…

数据分析:麦当劳食品营养数据探索并可视化

系列文章目录 作者:i阿极 作者简介:Python领域新星作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒关注…

c++模板整理

目录 一.泛型编程​​​​​​​ 二.函数模板 2.1 函数模板概念 2.2函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 三.类模板 3.1 类模板的定义格式 3.2 类模板的实例化 3.3模板类 一.泛型编程​​​​​​​ 如何实现一个通用的交…

【前端之旅】快速上手Echarts

一名软件工程专业学生的前端之旅,记录自己对三件套(HTML、CSS、JavaScript)、Jquery、Ajax、Axios、Bootstrap、Node.js、Vue、小程序开发(Uniapp)以及各种UI组件库、前端框架的学习。 【前端之旅】Web基础与开发工具 【前端之旅】手把手教你安装VS Code并附上超实用插件…