双向LSTM的问题

时间:2018-12-06 13:17:48

标签: python tensorflow machine-learning keras 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)

1 个答案:

答案 0 :(得分:1)

由于要在彼此之上堆叠多个LSTM层,因此需要在前两层使用return_sequences=True。否则,它们的输出将具有(batch_size, n_units)的形状,因此将不是序列,并且不能由后续LSTM层处理。