【问题标题】:Excluding One hot represation data from LSTM prediction从 LSTM 预测中排除一个热表示数据
【发布时间】:2019-06-07 09:15:03
【问题描述】:

我正在对一家使用 Keras LSTM 的公司的每日销售数据进行预测。数据的原始形状是[60 家商店 x 1034 天 x 207 种产品]。我创建了 One-hot 表示的日子,例如:

  • 星期一 1 0 0 0 0 0 0
  • 星期二 0 1 0 0 0 0 0
  • 星期三 0 0 1 0 0 0 0
  • 星期四 0 0 0 1 0 0 0
  • 星期五 0 0 0 0 1 0 0
  • 星期六 0 0 0 0 0 1 0
  • 星期日 0 0 0 0 0 0 1

此代表添加到所有商店的日期,因此形状新形状为 [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)

【问题讨论】:

    标签: python tensorflow keras lstm prediction


    【解决方案1】:

    我认为你的尺寸有误。它应该是 (60 x 1034 x 7 x 207 x 1) 所以网络有一个 4 暗淡的输入,在传递到密集层并获取输出之前你会变平。如果您可以发布代码图像以获取数据,则可以更清晰一些。

    可以使用 one_hot_decoder() 将输出转换为您想要的任何内容

    【讨论】:

    【解决方案2】:

    我找到了解决它的方法,我只需要从 train_y 和 train_x 重塑删除 8 列,以便拥有 207 个特征并在密集层输入 207

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-18
      • 2020-08-25
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      相关资源
      最近更新 更多