【问题标题】:Input Dimensionality for an LSTM in KerasKeras 中 LSTM 的输入维度
【发布时间】:2018-02-10 13:29:10
【问题描述】:

所以我很确定我输入了正确的尺寸。我认为错误在于输入的重塑,但不确定。

这是我正在使用的:

df_matrix = df_model.as_matrix()
df_matrix = np.reshape(df_matrix,(-1,588425,26))
df_matrix.shape
y_matrix = y.as_matrix()
y_matrix = np.reshape(y_matrix,(-1,588425,1))
df_matrix2 = df_model.as_matrix()

model.add(LSTM(32, input_shape=(588425, 26), return_sequences = True))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(df_matrix2, y, epochs=2, batch_size=1, verbose=2)

弹出此错误:ValueError: Input 0 is incompatible with layer lstm_17: expected ndim=3, found ndim=2

df_matrix2.shape 的输出为 (588425, 26)。我还尝试了 df_matrix ,我将其重塑为 3D 数组,df_matrix 的输出为 (1, 588425, 26)。两者都失败了,所以我不确定输入空间的问题是什么?由于 2-d 和 3-d 输入都给了我同样的错误。

【问题讨论】:

  • 你有 588K 长度为 26 的序列和 1 个特征,还是 1 个序列有 588K 时间步长和 26 个特征?
  • 我有 1 个具有 588k 时间步长和每个时间步长 26 个特征的序列
  • 改形为(1, ...)后出现什么错误?
  • 完全相同的错误
  • 你能打印出df_matrix2.shape吗?

标签: input keras reshape lstm


【解决方案1】:

您的问题的答案已经在您的问题中:

弹出此错误:ValueError: Input 0 is incompatible with layer lstm_17: expected ndim=3, found ndim=2

那么,你应该怎么做?

您有一个输入列表,其形状如下:

(N,N)

但是,对于 LSTM,您需要形状:

(N,N,N)

简单的解决方案是这样:

y_matrix = np.reshape(y_matrix,(588425,1,1))

另外,不要忘记更改 NN 中的数字:

model.add(LSTM(32, input_shape=(None, 1), return_sequences = True))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2018-01-03
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 2019-01-21
    相关资源
    最近更新 更多