凯拉斯LSTM的输入维度
问题描述:
所以我很确定我正确地输入了尺寸。我认为错误在于重塑投入,但并不确定。凯拉斯LSTM的输入维度
这里就是我的工作:
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异常:输入0与层lstm_17不相容:预计NDIM = 3,发现NDIM = 2
的df_matrix2.shape的输出是(588425,26)。我也尝试过将df_matrix重塑成一个3D数组,而df_matrix的输出是(1,588425,26)。两者都失败了,所以我不确定输入空间中的问题是什么?既然二维和三维输入都给了我同样的错误。
答
你的问题的答案已经在你的问题:
Which is popping out this error: ValueError: Input 0 is incompatible with layer lstm_17: expected ndim=3, found ndim=2
那么,你该怎么办?
你必须具有形状像这样的输入列表:
(N,N)
但是,对于LSTMs你需要的形状:
(N,N,N)
的simples的解决办法是让这样的事情:
y_matrix = np.reshape(y_matrix,(588425,1,1))
此外,不要忘记更改NN中的数字:
model.add(LSTM(32, input_shape=(None, 1), return_sequences = True))
您是否有588K长度为26的序列,具有1个特征或1个序列,具有588K个时间步长和26个特征? –
我有1个序列,588k时间步长,每个时间步长有26个特征 – a1letterword
重塑成'(1,...)'后的错误是什么? –