【问题标题】:Problems with Bidirectional LSTM双向 LSTM 的问题
【发布时间】:2019-05-08 04:57:19
【问题描述】:

最初我使用具有两个隐藏层的 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)

【问题讨论】:

    标签: python tensorflow machine-learning keras lstm


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-03-31
      • 2018-06-04
      • 2017-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多