技术标签: 基于数据驱动模型的二氧化碳气液两相流智能测量与监控 lstm 深度学习 人工智能
深度学习是机器学习前沿且热门的理论,而其中的两大框架卷积神经网络(CNN)以及长短期记忆网络(LSTM)是深度学习的代表,CNN能过够通过使用卷积核从样本数据中提取出其潜在的特征,而长短期记忆网络LSTM能够捕捉到长期的成分。近年来两者的结合成为研究的热点。卷积神经网络由卷积层和池化层交替叠加而成,在每个卷积层与池化层之间都有relu激活函数作用来加速模型的收敛,在模型中数据经过卷积神经网络的处理,所有特征融合后得到卷积神经网络的特征描述,此时传递数据给LSTM,通常情况下此时输入的数据需要reshape成LSTM处理的类型,LSTM得到新的输入后,确定需要保持与丢弃的,其中保持与丢弃借助sigmoid激活函数完成,任何数据乘1都为其本身,而任何函数乘0都为0,借助该即可选择遗忘以及保存重要的数据。当数据乘1时则代表被保留,从输入门中获取的数据即为我们更新了状态。最后借助输出门确定携带的信息,将新的状态,以及隐藏状态转移到下个时间步。
首先对于输入数据进行读取,本次的处理方法是CNN—LSTM故将数据类型reshape成CNN处理的数据类型,接下来进行数据的标准化处理,这里值得注意的是,搭建模型的目的是为了能够更好的得到预测的数据值,在多次的尝试了正规化的标准方法后,经过多次的调整参数发现,数据的损失始终无法降低到0.5以下下,此时为了输出数据更加的准确,调整了一下数据的标准化,数据依旧时正态分布,但期望值此时非0。
CNN的模块部分采用了两层卷积,两层最大池化,中间包含激活函数,此时CNN得到的数据无法直接输入到LSTM中 ,于是进行reshape使其符合LSTM的输入数据类型,通过LSTM层以及Dropout层的处理,最后在全连接层输出数据。
图6-1 CNN-LSTM模型
图6-2 训练过程中Loss变化曲线
图6-3 训练过程中mse变化曲线
图6-4 真实值与预测值变化曲线
本章的内容是第四章与第五章内容的延伸,在基于完成独立的卷积神经网络模型以及独立的长短期记忆网络模型后,尝试将两种模型相结合,利用卷积神经网络网络提取数据特征传给长短期记忆网络模型后进行处理,并产生最终模型,该网络模型的构建中,其标准化方法与前两者不同,这是为了能够让该模型达到比较优秀的预测效果,最后展示了通过CNN—LSTM模型对测试集数据的预测。
LSTM里的M就是Memory,所以LSTM主要的特点是有一定记忆能力,所以大部分时候是用来处理序列,比如处理一句话或者一段视频这样。CNN主要处理单张图的能力比较强,在一个序列里对前后的关联不太强。当两者集合时可以通过CNN来提取数据的特征信息,然后用LSTM处理,综上我认为虽然CNN-LSTM较两种单一的方法来说构造复杂,但是处理数据的能力更强。
图7-1 CNN训练过程中Loss变化曲线
图7-2 LSTM训练过程中Loss变化曲线
图7-3 CNN—LSTM训练过程中Loss变化曲线
观察上述两幅图像,CNN模型训练过程中损失下降更快,且更接近于0。而CNN-LSTM与单一的LSTM模型在损失下降到一定程度时表现基本一致,但有几点原因不可忽视,为了能够得到预测的数据使损失降低,CNN—LSTM的数据标准化方法不同,还有本次数据分析的样本数量不够庞大,对模型的训练也有一定程度的影响。
CNN模型 |
LSTM模型 |
CNN—LSTM模型 |
|
MSE |
5952.12 |
68719.47 |
21535.56 |
RMSE |
77.15 |
40.96 |
146.75 |
MAE |
50.98 |
33.90 |
120.49 |
MAPE |
0.18 |
0.04 |
0.12 |
R2 |
0.99 |
0.99 |
0.98 |
MSE(均方差)是预测数据和原始数据对应点误差的平方和的均值
RMSE(均方根) 也叫回归系统的拟合标准差,是MSE的平方根
MAE平均绝对误差(Mean Absolute Error)范围[0,+∞),当预测值与真实值完全吻合时等于0,即完美模型;误差越大,该值越大。
MAPE平均绝对百分比误差(Mean Absolute Percentage Error)范围[0,+∞),MAPE 为0%表示完美模型,MAPE 大于 100 %则表示劣质模型
R2(R-Square)决定系数,判断模型的好坏,0表示拟合效果差,1表示模型无错误。
通过对比可以发现,在处理一维的数据时,LSTM模型的预测效果要比CNN模型的预测效果好,这是因为CNN主要用来处理的是图像,而当用其来处理一维数据的时候我将一维数据进行了reshape,使CNN模型能够间接的处理一维数据。
为了保证实验的对比效果,三种模型均采用了相同的优化器adam优化器,采用该优化器的原因是,以往的随机梯度下降法学习速率单一,并且每一个模型参数都保持着一个学习速率。而在深度学习的领域,adam显著的优于其他的随机优化方法。其配置参数中的学习速率的大小可以确定学习的速度。其包含的自适应梯度对每一个不同的参数来调整不同的学习率,例如频繁变化则用小步长更新,稀疏的则用大步长更新。在本次设计中,数据的变化比较稀疏,为了利用稀疏梯度的信息,采用adam优化器,相比较于SGD算法其收敛的效果更好。
本章的主要对比了三种以及搭建完毕的模型对测试集的测试效果,通过主观评价与客观评价进行分析。没有达到预期的效果的原因是训练集,以及标准化方法不统一。训练模型的数据不够庞大也是一方面。还有当卷积神经网络与长短期记忆网络结合时,数据类型的转换尤为关键,输出数据的类型也不相同,导致结果并未达到预期。
好久没更新博客了,就连自己每天一句毒鸡汤也搁置了,整天上班忙,下班了看会儿手机,刷刷抖音,不知不觉一两个小时过去了,每天都是这样,不知不觉中三两天过去了,不知不觉中一两周过去了,又不知不觉中一两年过去了,人生短短有几个十年;回想还是珍惜当下,起码笨鸟先飞,在学校时有家长的督促和老师的鼓励及同学的激励,到了社会只有靠自己约束自己,只有自己克制住自己了,每天积累一点点,进步一点点,这样下去你总会看到效果的,没有的人的成功和出名是随随便便的,正如那句话:不积跬步无以至千里,不积小流无以成江海,江...
官网下载kernel u-boot rootfs 设备树的扳机支持包arm_ramdisk.image.gz device-tree-xlnx-xilinx-v2017.4.tar.gz u-boot-xlnx-master.zip linux-xlnx-master.zip解压内核和u-boot 直接进入内核和u-boot根目录的vi
索引快速全扫描和索引全扫描是有很大区别的。关键是如何理解“快速”二字。索引全扫描是根据索引叶子节点之间的链表(实际上是双向链表)来从一段逐个读取节点到另一端来扫描的。而快速全扫描,也是要对索引段进行全量访问,只是扫描的方式不是按照链表的指向来一个一个地读取叶子节点。而是直接从段头块里读取到索引的hwm,然后读取hwm之下的所以数据块内容,这个读取就是直接进行多块读取(全扫描有点像单
魅族M9买了一年多,系统没动过。直到某一天再也不能打电话发短信了,就换上了最新的flyme系统。然而之前备份了通讯录不能恢复了。研究了一下才发现,之前备份了通讯录是在手机的Backup文件夹下,文件Contact/Contact.xml,而flyme不再支持Contact.xml的恢复。但是flyme支持vCard格式(*.vcf)导入。对于一只程序猿来说,解决这个问题的方法必须是自己写程
XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。XML 实例文档我们将在下面的例子中使用这个 XML 文档。<?xml version="1.0" encoding="ISO-8859-1"?><bookstore><book> <title la...
我怎么觉得我在描述IPv6移动性的时候这么费劲呢,洋洋洒洒几大篇,竟然还是没有囊括移动IPv6的所有,比如说,我总是试图避开复杂的XFRM…这并不完美!并不甘心,所以我要找找看看有没有什么现成的东西。哈哈,终于被我找到了:https://wiki.aalto.fi/download/attachments/70790972/presentation.pdf?version=1&amp;modi...
美国著名的《Delphi开发者杂志(Delphi Developers Journal)》是世界上众多Delphi程序员必读的专业杂志,在国内我们很少有机会读到这份优秀的专业刊物,但是我们可以在Inprise公司( http://www.inprise.com )的网页上看到该杂志刊登的一些优秀文章。同时,还可以通过电子邮件订阅该杂志免费提供的Delphi使用技巧,订阅网址为 http://ww
首先install autoprefixer然后在根目录添加.postcssrc.js内容为module.exports = { "plugins": { // to edit target browsers: use "browserlist" field in package.json "autoprefixer": { } }}或者在p
WSL2 安装桌面如果已经安装了xfce 或者xubuntu-desktop,可以选择性卸载,参考[如何卸载xfce桌面或者xubuntu-desktop](如何卸载xfce桌面或者xubuntu-desktop - 简书 (jianshu.com))如果安装的是xfce桌面卸载xfce 4sudo apt-get remove xfce4卸载相关软件sudo apt-get remove xfce4*自动卸载不必要的软件sudo apt-get autoremove系统清理sudo a
无拼接时:SELECT scan_time + '5 day' FROM tbl_temp_record SELECT scan_time + '-5 day' FROM tbl_temp_record 拼接字段时:SELECT scan_time + 5 || ' day' FROM tbl_temp_record 报错ERROR: operator d
本篇是 使用Gradle 构建spring Boot工程系列 的第七篇,接下来的一段时间里,将陆续更新本系列的其他文章,记录本人学习使用Gradle构建spring Boot工程的过程、技术要点以及在过程中遇到的各种问题,欢迎广大程序猿共同关注学习,也欢迎大家灌水拍砖,提出自己的宝贵意见,知识在交流中碰撞,技术在交流中提升! 在进行接下来的相关功能引入的过程中,我们将对我...
字符串和数组char ch1[] = “yangheping”;char ch2[] = { “yangheping” };两个字符串是放在栈区的,(ch1 == ch2) &amp;amp;amp;amp;amp;amp;amp;amp;lt;&amp;amp;amp;amp;amp;amp;amp;amp;lt; endl; // 0是因为ch1和ch2都指向两个字符串的首元素地址,然而在栈区中两个字符串的变量名字不同,且ch1[]和ch2[]让系统在内存中为其开辟