【发布时间】:2019-02-09 06:28:34
【问题描述】:
我从 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: Error when checking target: expected dense_16 to have 2 dimensions, but got array with shape (11030, 50, 1).
但这怎么可能呢?如果我使用model.summary(),则表明LSTM 输出具有这种形状:(None, 64)。那么它如何将形状为(11030, 50, 1) 的数组传递给密集层呢?
此外,如果我尝试在 LSTM 和 Dense 之间添加 model.add(Flatten()),我会收到此错误:ValueError: Input 0 is incompatible with layer flatten_3: expected min_ndim=3, found ndim=2。
那么,它将 2D 传递给 Flatten,但它怎么可能将 3D 传递给 Dense?
【问题讨论】:
-
试试
input_shape=(None,n)关于flatten,需要return_sequences为true -
我都试过了:它仍然给出同样的错误。出于某种原因,形状
(11030, 50, 1)的输入似乎直接进入 Dense。而形状(None, 64)的 LSTM 输出应该去那里。