【问题标题】:Problem with Keras LSTM input_shape: expected lstm_1_input to have shape (500, 2) but got array with shape (500, 5)Keras LSTM input_shape 的问题:预期 lstm_1_input 的形状为 (500, 2) 但得到的数组的形状为 (500, 5)
【发布时间】:2020-01-20 15:48:08
【问题描述】:

x_trainy_train 是我的模型的输入和输出,形状分别为 (6508, 500, 5), (6508, 5)

而模型是这样的:

model = Sequential()
model.add(LSTM(units=96, return_sequences=True, input_shape=x_train.shape[1:]))
model.add(Dropout(0.2))
model.add(LSTM(units=96, return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(units=96))
model.add(Dropout(0.2))
model.add(Dense(units=5))

model.compile(loss='mean_squared_error', optimizer='adam', metrics=['mse'])

model.fit(x_train, y_train, epochs=epochs, batch_size=batch_size)

模型总结:

Model: "sequential_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
lstm_1 (LSTM)                (None, 500, 96)           39168     
_________________________________________________________________
dropout_1 (Dropout)          (None, 500, 96)           0         
_________________________________________________________________
lstm_2 (LSTM)                (None, 500, 96)           74112     
_________________________________________________________________
dropout_2 (Dropout)          (None, 500, 96)           0         
_________________________________________________________________
lstm_3 (LSTM)                (None, 96)                74112     
_________________________________________________________________
dropout_3 (Dropout)          (None, 96)                0         
_________________________________________________________________
dense_1 (Dense)              (None, 5)                 485       
=================================================================
Total params: 187,877
Trainable params: 187,877
Non-trainable params: 0

问题是lstm_1 需要 input_shape (500, 2) 而我的数据形状是 (500, 5):

ValueError: Error when checking input: expected lstm_1_input to have shape (500, 2) but got array with shape (500, 5)

我打印图层的形状:

for layer in model.layers:
    print(layer.input_shape, end='\t')

# (None, 500, 5)  (None, 500, 96) (None, 500, 96) (None, 500, 96) (None, 500, 96) (None, 96)      (None, 96)

它为lstm_1 打印(None, 500, 5),所以我无法找出问题所在。

Keras==2.3.0
tf==1.14.0

更新:

使用keras==2.2.5tf.keras 可以解决问题。

【问题讨论】:

    标签: python tensorflow keras deep-learning lstm


    【解决方案1】:

    为了社区的利益,在回答部分提及解决方案。

    使用tf.keras 代替keras 已解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-14
      • 2019-05-09
      • 1970-01-01
      • 2020-05-29
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 2019-03-28
      相关资源
      最近更新 更多