ValueError:输入0与层lstm_13不兼容:预期ndim = 3,找到ndim = 4

时间:2017-06-16 07:23:45

标签: python keras lstm recurrent-neural-network

我正在尝试进行多级分类,以下是我的训练输入和输出的详细信息:

  

train_input.shape =(1,95000,360)(每个输入数组长度为95000)   元素是一个360长度的数组)

     

train_output.shape =(1,95000,22)(22门课程)

model = Sequential()

model.add(LSTM(22, input_shape=(1, 95000,360)))
model.add(Dense(22, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(train_input, train_output, epochs=2, batch_size=500)

错误是:

  

ValueError:输入0与图层lstm_13不兼容:预期ndim = 3,发现ndim = 4   排队:   model.add(LSTM(22,input_shape =(1,95000,360)))

请帮助我,我无法通过其他答案解决。

4 个答案:

答案 0 :(得分:9)

我通过制作

解决了这个问题
  

输入大小:(95000,360,1)和   输出大小:(95000,22)

并在定义模型的代码中将输入形状更改为(360,1)

model = Sequential()
model.add(LSTM(22, input_shape=(360,1)))
model.add(Dense(22, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(ml2_train_input, ml2_train_output_enc, epochs=2, batch_size=500)

答案 1 :(得分:4)

input_shape应该是(timesteps,n_features)。删除第一个维度。

input_shape = (95000,360)

输出相同。

答案 2 :(得分:-1)

嗯,我认为主要的问题在于网络中的return_sequences参数。对于最后一层和{ {1}}用于其他上一层

答案 3 :(得分:-1)

return_sequences不应在所有层中都设置为True,只是不要在最后一层中将其设置为空,并省略return_sequences=True