首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于stateful=True的多层LSTM网

基于stateful=True的多层LSTM网
EN

Stack Overflow用户
提问于 2018-10-26 16:45:57
回答 1查看 1.2K关注 0票数 2

我的问题是,这段代码有意义吗?如果这有意义的话,目的应该是什么呢?

代码语言:javascript
复制
model.add(LSTM(18, return_sequences=True,batch_input_shape=(batch_size,look_back,dim_x), stateful=True))
model.add(Dropout(0.3))
model.add(LSTM(50,return_sequences=False,stateful=False))
model.add(Dropout(0.3))
model.add(Dense(1, activation='linear'))

因为如果我的第一个LSTM层从一个批返回到另一个批处理的状态,为什么不应该同样地执行第二个LSTM层呢?

我很难理解Keras中的LSTM机制,所以我非常感谢您的帮助:)

如果你否决了这篇文章,你能告诉我为什么在命令里吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-27 10:20:17

您的程序是一个回归问题,您的模型由两个lstm层组成,每个层有18层和50层,最后是一个显示回归值的密集层。

LSTM需要一个3D input.Since,您的第一个LSTM层的输出要输入到第二个LSTM layer.The输入,第二个LSTM层的输入也应该是3D的。因此,我们将retrun序列设为真,因为它将返回一个3D输出,然后可以用作第二个LSTM的输入。

您的第二个LSTM值不返回序列,因为在第二个LSTM之后,您有一个不需要3D值作为输入的致密层。

更新

在keras中,默认情况下,在每一批培训数据之后重置状态,因此,如果不希望在每一批数据之后重置状态,则可以设置stateful=True。如果将LSTM变为有状态的,批处理的最终状态将用作下一批处理的初始状态。稍后可以通过调用reset_states()来重置状态。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53013146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档