Max*_*wer 4 python lstm keras tensorflow recurrent-neural-network
为简洁而编辑。
我正在尝试建立一个LSTM模型,请参考以下文档示例
from keras.models import Sequential
from keras.layers import LSTM
Run Code Online (Sandbox Code Playgroud)
以下三行代码(加上注释)直接来自上面的文档链接:
model = Sequential()
model.add(LSTM(32, input_dim=64, input_length=10))
# for subsequent layers, not need to specify the input size:
model.add(LSTM(16))
Run Code Online (Sandbox Code Playgroud)
ValueError:输入0与层lstm_2不兼容:预期ndim = 3,找到的ndim = 2
在执行第二个model.add()语句之后,但在将模型暴露给我的数据甚至编译它之前,我在上面得到了该错误。
我在这里做错了什么?任何帮助深表感谢。仅供参考,我正在使用Keras 1.2.1。编辑:刚刚升级到当前的1.2.2,仍然有相同的问题。
感谢patyork在github上回答了这个问题:
“第二个LSTM层没有获得期望的3D输入(形状为(batch_size,时间步长,特征)。这是因为第一LSTM层具有(按默认值计算)return_sequences = False,这意味着它仅输出在时间t-1设置的最后一个要素的形状(batch_size,32),或2个不包含时间的维度。”
因此,要提供一个代码示例,说明如何使用堆叠式LSTM实现多对一(return_sequences = False)序列分类,只需确保在中间层使用return_sequences = True像这样:
model = Sequential()
model.add(LSTM(32, input_dim=64, input_length=10, return_sequences=True))
model.add(LSTM(24, return_sequences=True))
model.add(LSTM(16, return_sequences=True))
model.add(LSTM(1, return_sequences=False))
model.compile(optimizer = 'RMSprop', loss = 'categorical_crossentropy')
Run Code Online (Sandbox Code Playgroud)
(没有错误)
| 归档时间: |
|
| 查看次数: |
907 次 |
| 最近记录: |