python - 双向 LSTM 的问题
问题描述
最初我使用带有两个隐藏层的 LSTM,然后决定看看使用双向层是否会有任何改进。我没有改变从 LSTM 到双向 LSTM 的输入形状。当我运行 LSTM 版本时,它运行得很好,但是当我运行双向版本时,我收到关于第二层期望 4 维的错误。我的问题是为什么会发生这种情况,我该怎么办?
错误消息:ValueError:输入 0 与双向_2 层不兼容:预期 ndim=3,发现 ndim=2
训练集的输入形状为(284,1,3)
。
双向 LSTM 的代码:
model = Sequential()
model.add(Bidirectional(LSTM(units=steps,input_shape=(1,steps))))
model.add(Bidirectional(LSTM(steps),merge_mode= 'ave'))
model.add(LSTM(units=steps,return_sequences=True,activation='relu'))
model.compile(loss='mse', optimizer='sgd',metrics=[Gavg])
model.fit(X_train, y_train, batch_size=1, epochs= 200, validation_data=(X_test,y_test), verbose=1)
解决方案
由于您将多个 LSTM 层堆叠在一起,因此您需要return_sequences=True
在前两层上使用。否则,它们的输出将具有形状,(batch_size, n_units)
因此不会是序列,并且无法由以下 LSTM 层处理。
推荐阅读
- redux - Immutable.js:创建一个包含一个元素的列表
- javascript - 触发 Modal 以在 useEffect 挂钩内显示的问题
- javascript - AWS Lambda 函数:无法读取未定义的属性 'logs' 'numberOfPages' 'stream'。包问题或 AWS Lambda 问题?
- html - 如何使用 CSS 隐藏行中的内联元素溢出?
- mysql - 如何允许我的团队成员访问我的 AWS mySQL 数据库?
- python - 如何在数据框中选择 NaN 单元格?
- reactjs - 开玩笑测试未通过创建反应应用程序
- java - 是否保证来自 ExecutorService 的线程更新本地声明的并发 hashmap?
- list - ELM:当我单击按钮时,Onlick 按钮可将 HTML 消息中的特定字符串移植到 JS
- java - 如何在 java 8 中创建嵌套对象列表?