社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

深度学习的时间和空间预测 | 实用贴

happy科研 • 3 年前 • 1160 次点击  

机器学习和深度学习中,最关注的是气候研究方面的预测,之前学习过了时间序列预测的内容,基本上搞清楚了数据的输入和输出,但是那些都仅仅是一维度的时间序列预测,并没有涉及空间尺度上的预测。深度学习作为机器学习范畴下的一个分支,在气候变化预测研究方面具有巨大的潜力。相比于物理化学传输模型那些复杂的公式,深度学习不用从幼儿园开始,直接从高中开始学习,不需要前期的物理化学基础就可能获得较好的结果。其实除了一维的时间序列预测,我们更加关注的是时空预测问题,具体到真实的地理环境中来,比如预测极端高温天气,特别是最近几天,中国北方地区持续的高温预测。又比如空气污染的时空预测,如果还是单维的预测,那么就会忽视掉地理事物演化的空间异质性。So,我们需要研究时空预测,这对于现实的社会具有重要的意义。


现在可以用convLSTM模型来做时空预测,关于这个模型的提出详细内容可以去下载原文看,现在的引用都5k多了【https://arxiv.org/abs/1506.04214v1】,可见其重要性,所以要把做出具有影响力的研究作为目标,否则有的做出来一个人都不读那就失去了研究的意义了。


这个模型原本设计用来做雷达降水预测的,但是其运用很广泛,涉及时空预测问题的都可以用来尝试,比如下面这个用来预测北美和欧洲的空气污染物的时空分布的。



这个模型从名字上convLSTM就可以知道是卷积和长短期记忆网络联合的,卷积复杂空间特征的提取,长短期用于时间序列处理。


关于这个convLSTM模型的教程目前比较少,但是仍然可以从网上或文献中学习到一些东西以帮助我们实现它。这个模型和LSTM的区别可以在网上搜索到,可以从公式上看看那些位置被换成了卷积操作,虽然看了公式也不一定额能写出来,但是看了之后肯定会加深对模型的理解的。


首先考虑到的当然是keras官网的例子了,convLSTM2D 这个class是实现的关键,官网提供的例子是关于视频帧预测的,每一帧就是一张图片,有宽度和高度,有多少分辨率。那么放到我们地学研究中来,很多数据也是这个样子的,比如SST是空间场吧,有多少个经度,有多少个维度,有多少个时间等等

内容都具有相同的特征。所以可以先从视频帧预测中获得对convLSTM模型的实现认知,包括数据是怎么预处理的。



convLSTM模型要求的输入数据必须是5D的tensor(张量)

So,实现这个模型,现在面临的问题就是如何将手里的数据重塑为5维的。这个模型当然还可以配置成时间序列预测,但是这里不关心。



手里的数据就是image,有tiff格式的,png格式的,或者netCDF这样的网格数据。


模型的构造很容易,直接从keras call出来就行了,但是如果input shape不正确的话是绝对不行的。下图是我昨天构造的一个简单的,模型看起来不是很复杂,就三个学习层,其他的卷积核啊,过滤器啊那些的加起来最后超过400万个参数,由于我的电脑的显存不够,所有用的是CPU来测试训练,训练20个epoch花了两个小时,所以要真的做起来的话还是考虑用GPU来吧、一般较大的卷积核能偶捕捉到复杂的特征,换到我们人类来说,眼关八方你可以发现更多东西,眼界太小的话是发现不了复杂的东西的。



由于GPU显存不够,所以这是用CPU来测试的,虽然模型简单,但是最大的成果在于成功测试了这个模型,从数据塑造到最后没有报错这个过程中,这个测试是有价值的



不过这里看到了一篇文献可以帮助我们更好地理解和运用这个模型。这是一篇关于SST预测的,如果想阅读的话可以看题目去下载来看看,其中对于模型和数据的准备部分还是说的比较详细的,我准备多读几遍。


在这篇文献中,数据集介绍部分,使用的是OISST数据集,每天的,就像netCDF数据打开后可以看到有很多的时间层。共计有1.3万张左右的SST图像,我猜测是把nc文件的每一个时间层的数据都写出去了,分辨率是22 by 16这个就是在输入convLSTM模型中的宽度和高度了(samples,time_steps,width,height,channels),channels的话就是特征,这篇文章是的特征就一个,不像其他的是这样的:考虑了环流因素啊,交通灯因素的来预测,多个预测一个。

实现这个模型,最大的难点和关键点还是在数据集的塑造上,以及预测问题的设计上,更多详细的可以去下载这篇文献来阅读一下。


OK,以上仅作学习记录,个人理解,更多内容请搜索相关的文献进行阅读,有的文献多读几遍就会有新的认识,然后再通过代码进行简单数据的测试,如果测试成功了,那么迁移运用起来就没有多大困难了,不建议一来就去看那些复杂的公式,一是可能看不懂,我相信我们大多数人都是很普通的,二是看了也不一定能够用代码实现,但是我们最大的想法是实现它,比如要预测这几天的高温天气,你如果觉得看公式可以解决问题的话那就去看。从代码中学习,那里不会点那里哈哈,最关键的就两个问题,一是如何重塑数据,二是如何涉及预测问题。



往 期 推 荐
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/138403
 
1160 次点击