首页 文章

ValueError:检查输入时出错:预期lstm_1_input有3个维度,但是有形状的数组(393613,50)

提问于
浏览
0

我在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 回答

  • 0

    在初始化第一层时,您传递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],)))

相关问题