首页 > 解决方案 > ValueError: 层 lstm 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=4。收到的完整形状:(无、32、24、7)

问题描述

我仍在弄清楚如何解决这个错误......因为我必须将我的第一层输入形状修复为 input_shape=(BATCH_SIZE, N_PAST, N_FEATURES) 我在 LSTM 和 GRU 的任何错误上都收到错误

    model = tf.keras.models.Sequential([
        tf.keras.layers.LSTM(64, return_sequences=True, input_shape=(BATCH_SIZE,N_PAST, N_FEATURES)),
        tf.keras.layers.Dense(N_FEATURES)
    ])

    model.summary()

    optimizer =  tf.keras.optimizers.SGD(lr=1e-8, momentum=0.9)
    model.compile(
        loss="mse",
        optimizer=optimizer,
        metrics=["mae"]
    )
    model.fit(
        train_set, validation_data=valid_set,validation_steps=100, epochs=100
    )

标签: tensorflowkerasneural-networkconv-neural-networklstm

解决方案


永远不需要给模型一个固定的 batch_size 维度值,tensorflow 将根据给定的数据形状动态地处理这个。

所以在模型的构建中:

tf.keras.layers.Dense(7, input_shape=(N_PAST, N_FEATURES), activation='relu')

执行 summary() 时,此层的输入形状应为 (None, N_PAST, N_FEATURES)


推荐阅读