LSTM输入和目标形状上的错误

时间:2018-07-23 18:14:14

标签: python keras lstm

我正在使用Keras的LSTM处理时间序列预测问题。我已经在TimeseriesGenerator上完成了数据集的整形和批处理,但是我不确定我是否能获得想要的结果,所以我试图使其简化调试。

我的数据由1个具有100个时间步长和1个功能的样本组成,我将使用最后30个值进行测试。我无法弄清楚训练x / y数据集的形状出了什么问题。

train_x, test_x, train_y, test_y = train_test_split(x, y, test_size=30, shuffle=False)
train_x = np.reshape(train_x, (1, train_x.shape[0], train_x.shape[1]))

model = Sequential()
model.add(LSTM(units = 16, input_shape=(train_x.shape[1],train_x.shape[2])))
model.add(Dense(units = 1, activation = 'linear'))
model.compile(optimizer = 'adam', loss = 'mean_squared_error')
history = model.fit(train_x, train_y, validation_split=0.1, batch_size = 16, epochs = 300, shuffle=False,verbose=1)  
  

ValueError:输入数组应具有与目标数组相同数量的样本。找到1个输入样本和69个目标样本。

1 个答案:

答案 0 :(得分:0)

您对要素进行重塑将创建一个形状数组(1,xshape [0],xshape [1])。 这意味着您只有1个样本,您的y有69个样本。两者的大小必须匹配。如果您有1个输入X,则必须传递1个Y。