我从 Keras 收到非常困惑的错误消息。我使用以下模型并将形状为 (num_examples, n, 1)
的输入传递给它。
def create_model():
model = Sequential()
model.add(LSTM(64, input_shape=(n,1), return_sequences=False))
model.add(Dense(units=n, activation='linear'))
return model
我收到此错误消息:
ValueError:检查目标时出错:预期 dense_16 具有 2 个维度,但得到形状为 (11030, 50, 1) 的数组
。
但这怎么可能呢?如果我使用 model.summary()
,它表明 LSTM
输出具有以下形状:(None, 64)
。那么它如何将形状为 (11030, 50, 1)
的数组传递给 Dense 层?
此外,如果我尝试在 LSTM 和 Dense 之间添加 model.add(Flatten())
,我会收到此错误:ValueError: Input 0 is incompatible with layer flatten_3: expected min_ndim =3,发现 ndim=2
。
那么,它将 2D 传递给 Flatten,但它怎么可能将 3D 传递给 Dense?
最佳答案
问题不在于您的模型,而在于目标,即您提供的y 标签。您不匹配,因为您的模型输出 (batch_size, n)
而您给出的是 (batch_size, 50, 1)
。
假设 n=50
然后您需要将目标标签压缩到 2 维并删除 1。y_train = y_train.squeeze()
应该可以解决形状不匹配问题。
关于python - Keras 期望 dense_13 具有 2 个维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52162609/