【问题标题】:Keras LSTM ValueError: Error when checking target: expected dense_23 to have shape (1,) but got array with shape (70,)Keras LSTM ValueError:检查目标时出错:预期dense_23具有形状(1,)但得到形状为(70,)的数组
【发布时间】:2020-07-16 08:01:06
【问题描述】:

我正在尝试训练一个基本的 LSTM 网络,但我遇到了 model.fit 错误。我有两个数据集,每个数据集都有 3145 个长度为 7 的序列。我想将这两个数据集打包到同一个时间步中。因此,我将 x_train 和 y_train 重新塑造成以下形状:

x_train.shape = (3145, 70, 2)
y_train.shape = (3145, 70)

如您所见,我应该有 3145 个样本,每个样本有 70 个时间步长,每个样本有 2 个特征和一个目标。然后我定义以下模型:

model = Sequential()

model.add(LSTM(4, input_shape=(x_train.shape[1], x_train.shape[2])))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')

为了训练,我跑线

model.fit(x_train, y_train, epochs=100, batch_size=1, verbose=2)

但这给了我错误

ValueError: Error when checking target: expected dense_23 to have shape (1,) but got array with shape (70,)

我很困惑为什么会发生这个错误。有 70 个时间步,我应该有 70 个目标,对吗?

对于解释此错误的任何帮助,我将不胜感激!

【问题讨论】:

    标签: python tensorflow keras lstm


    【解决方案1】:

    您需要与 LSTM 层的输出 dim 相同的输入层密集单元。在您的情况下,LSTM 层的输出是 70,就像您在形状中看到的那样。

    尝试更改

    model.add(Dense(70))
    

    或者让模型像这样推断层的单位数量。

    model.add(Dense())
    

    【讨论】:

    • 啊,我明白了。太简单了,我应该看看!非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 2021-06-30
    相关资源
    最近更新 更多