我正在使用Keras LSTM对一家公司的每日销售数据进行预测。数据的原始形状为[60个商店x 1034天x 207个产品]。我创建了像这样的一天的一站式展示:
此代表已添加到所有商店的日期,因此新形状的形状为[60个商店x 1034天x(207个产品+ 7天)]
对于具有重要意义的天,我又添加了一个名为S_day的列,其值为0或1。
因此,数据的最终尺寸为[60 x 1034 x 215]。
我用于训练上层973天,并为每个商店测试集合的最后61天。
train_x [60 x 973 x 215]
train_y [60 x 973 x 215]
test_x [60 x 973 x 215](数据形状为[60 x 61 x 215],但我们填充零以匹配形状)
test_y [60 x 973 x 215](数据形状为[60 x 61 x 215],但我们填充零以匹配形状)
y数据是x数据,它们以滞后-1移位,以便作为第二天的预测目标。
我的问题是我需要从最终预测中排除这8个额外的列。
# design model
model = Sequential()
model.add(LSTM(100, input_shape=(train_x.shape[1], train_x.shape[2]), return_sequences=True))
model.add(Dense(train_x.shape[2]))
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
# fit model
history = model.fit(train_x, train_y,
epochs=10,
batch_size=2,
validation_data=(test_x, test_y),
verbose=2,
shuffle=False)
# make a prediction
test_pred = model.predict(test_x)
答案 0 :(得分:0)
我认为您在尺寸上犯了一个错误。它应该是(60 x 1034 x 7 x 207 x 1),因此网络具有4个暗淡的输入,您先展平,然后再传递到密集层并获取输出。如果您可以发布代码图像以获取数据,则可以使其更加清晰。
可以使用one_hot_decoder()将输出转换为所需的任何内容
答案 1 :(得分:0)
我找到了解决该问题的方法,我只需要重塑来自train_y和train_x的下落的8列即可获得207个要素并在密集层输入207中