我正在尝试进行多级分类,以下是我的训练输入和输出的详细信息:
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)))
请帮助我,我无法通过其他答案解决。
答案 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