我在Keras有一个错误,我找不到解决方案 . 我搜索了整个互联网,我仍然没有回答^^这是我的代码 .
model = Sequential()
model.add(LSTM(32, return_sequences=True, input_shape=X.values.shape))
model.add(LSTM(32, return_sequences=True))
model.add(LSTM(32))
model.add(Dense(10, activation="softmax"))
model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=['accuracy'])
错误是第二行 . 它说“ValueError:检查输入时出错:预期lstm_1_input有3个维度,但是有形状的数组(393613,50)”我的Dataframe X的形状是正确的 . 当我尝试训练模型时,错误弹出
model.fit(X.values, Y.values, batch_size=200, epochs=10, validation_split=0.05)
我希望有人可以帮助我:-)
[编辑]顺便说一句 . 这是model.summary()
图层(类型)输出形状参数#
lstm_1(LSTM)(无,393613,32)10624
lstm_2(LSTM)(无,393613,32)8320
lstm_3(LSTM)(无,32)8320
dense_1(密集)(无,10)330
总参数:27,594可训练参数:27,594不可训练参数:0
亲切的问候尼克拉斯 .
1 回答
在初始化第一层时,您传递2个值作为input_shape =
X.values.shape
keras已经预计每批次的行数为NONE . 在运行时,此值由
batch_size=
(在您的情况下为200)确定所以基本上它内部改变了第1层的输入形状为
NO_OF_FEATURES, NO_OF_ROWS_IN_DATA_SET, NO_OF_ROWS_PER_BATCH
要解决这个问题,您只需将1参数作为
input_shape
传递,这不是功能 . Keras已经接受NONE
作为占位符,每批次没有行 .所以
input_shape=(X.values.shape[1],)
应该做的伎俩 .model.add(LSTM(32, return_sequences=True, input_shape=(X.values.shape[1],)))