爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 11838|回复: 12

[讨论] LSTM网络中输入训练数据的结构

[复制链接]

新浪微博达人勋

发表于 2019-2-26 09:56:12 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 Black_kiki 于 2019-2-28 10:14 编辑

最近开始接触LSTM网络,对输入的训练数据的结构有一些疑惑,下面我将自己的训练数据进行简化后表述。假设有3个观测点的时间序列数据,每个观测点记录了连续7天的气温,如图1所示。   我想用前两天的气温数据去预测下一天的气温,因此构建了如图2所示的XTrain 和YTrain.


问题1:
如果将 ‘MiniBatchSize’的值设为‘1’, 是不是就意味着,网络先读取第一个输入进去的cell,构建这个cell中时序数据之间的关系,确定权重值,然后再读取第二个cell,并更新权重值?
问题2:
如果将‘shuffle’的值设置为‘once’, 是不是意味着,在网络训练前,XTrain 中的3个cell的先后顺序会发生改变,而cell里面的时序数据位置不变?


图1



点1: 1 2 3 4 3 2 1


点2: 5 6 7 8 7 6 5


点3: 9 8 7 6 7 8 9

图2
GV2jN_meitu_1.jpg

GV2jN.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2019-2-28 08:54:21 | 显示全部楼层
有哪位了解的能帮忙解答一下吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-2-28 09:43:44 | 显示全部楼层
本帖最后由 黄裳 于 2019-2-28 10:02 编辑

你的第一个YTrain应该是{3 4 3 2 1}吧?另外LSTM的输入不是三维的数组(samples, times, features)吗?如果MiniBatchSize=1, 就是:
1. samples一个一个的输入
2. 然后计算这个输入后的cost function,
3. 然后更新权重,
接着输入samples里的第二个,重复上面3步的操作,直到你计算完所有samples, 如果设定epoch大于1,则再进行第二轮的更新权重,再重复3步操作,知道达到最后你设定的epochs的次数,其实总体看就是
for i in epochs:
        1. samples按 size(MiniBatchSize) 大小整体输入(注:对于你设定的1来说,就是一个一个的样例输入)
        2. 然后计算整个MiniBatchSize输入后的cost function,
        3. 然后更新权重,
最后就得到你训练好的模型了。

另外,LSTM输入的是(samples, times, features),这个samples是都应该是都是一类吧, 怎么你的samples里的是不同站点呢?它怎么训练呢?就是说你想要用一个LSTM网络训练出多个站的温度演变,也不是不可以,但我觉得你这样放应该是错的。你这个里面每个站点都是一个时间序列,不同站点就是多个站的时间序列的数据,或者说其实是时空数据。




密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2019-2-28 09:57:52 | 显示全部楼层
黄裳 发表于 2019-2-28 09:43
你的第一个YTrain应该是{3 4 3 2 1}吧?另外LSTM的输入不是三维的数组(samples, times, features)吗?如果M ...

对,第一个YTrain,我编辑错了,不好意思
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2019-2-28 10:03:03 | 显示全部楼层
本帖最后由 Black_kiki 于 2019-2-28 10:12 编辑
Black_kiki 发表于 2019-2-28 09:57
对,第一个YTrain,我编辑错了,不好意思

1.你说LSTM需要输入三维数组,这个是不是keras 中的LSTM的输入要求啊?Matlab中的LSTM输入好像不是按照这个输入形式。2. 按照你用的keras中的要求,你所说的一个sapmle,是不是就代表XTrain中的一个cell呢?
3. 我想把不同站点的数据放在一起训练,因为不同站点的数据序列差别不大,不想一个站点数据训练一个模型。




密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-2-28 10:05:17 | 显示全部楼层
Black_kiki 发表于 2019-2-28 10:03
你说LSTM需要输入三维数组,这个是不是keras 中的LSTM的输入要求啊?Matlab中的LSTM输入好像不是按照这个 ...

是Keras的。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-2-28 10:20:43 | 显示全部楼层
本帖最后由 黄裳 于 2019-2-28 10:25 编辑
Black_kiki 发表于 2019-2-28 10:03
1.你说LSTM需要输入三维数组,这个是不是keras 中的LSTM的输入要求啊?Matlab中的LSTM输入好像不是按照这 ...

我猜是的,cell对应samples那个维度。事实上应该是这样,如果是一个站的话, 微信图片_20190228101252.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2019-2-28 11:06:51 | 显示全部楼层
本帖最后由 Black_kiki 于 2019-2-28 11:08 编辑
黄裳 发表于 2019-2-28 10:20
我猜是的,cell对应samples那个维度。事实上应该是这样,如果是一个站的话,

我尝试过按照你所列的这种数据输入模式(如下图我把所有站点的数据都排列进了XTrain)进行训练,把MiniBatch值设置为5,数据输入时不打乱顺序。出来的训练结果比我按照图2中XTrain的数据输入模式好,不知道原因是什么。

我认为按照图2中的模式,并把MiniBatch设置为1,和按照你所列的模式,把MiniBatch 设置为5,应该是一样的啊,都是同一个站点数据一起计算,再换下一个站点数据计算并更新权重。
捕获.PNG

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-2-28 14:21:33 | 显示全部楼层
Black_kiki 发表于 2019-2-28 11:06
我尝试过按照你所列的这种数据输入模式(如下图我把所有站点的数据都排列进了XTrain)进行训练,把MiniBa ...

是不一样的,每个sample是同一类的东西。你的epochs是多少?多个站这样比较好: LSTM.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2019-3-1 09:06:07 | 显示全部楼层
本帖最后由 Black_kiki 于 2019-3-2 09:16 编辑
黄裳 发表于 2019-2-28 14:21
是不一样的,每个sample是同一类的东西。你的epochs是多少?多个站这样比较好:

还有一些疑问需要请教你:如果按照这个排列方法,每个sample中前后两个纵列的数据并不存在前后的时间联系,要想保持Keras中所说的stateful,MiniBatch是不是要设置为5?


密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表