【问题标题】:How to convert 2d array into format that keras+LSTM needs如何将二维数组转换成keras+LSTM需要的格式
【发布时间】:2017-11-10 17:34:22
【问题描述】:

我有一个5000 by 9 2d numpy 特征数组trainX,它们是时间序列的特征。我还有一个 1d numpy 浮点特征标签数组trainY。例如,这正是 scikit-learn 所需的格式。

我想将这些与 keras+LSTM 一起使用。这是我目前的代码:

NUM_EPOCHS = 20
model = Sequential()
model.add(LSTM(8, input_shape=(1, window_size)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(trainX, trainY, epochs=NUM_EPOCHS, batch_size=1, verbose=2)

但这不起作用,因为 keras 需要 trainX 以不同的格式。我已经阅读了手册,但我无法理解这到底是什么。

如何将我的数据转换成 keras 可以接受的格式?

【问题讨论】:

    标签: python machine-learning tensorflow keras


    【解决方案1】:

    格式为(samples, timeSteps, features)

    你有多少序列?这听起来像是一个 5000 步的序列,对吗?

    那么格式就是(1,5000,9)

    如果每个时间步有一个标签,标签也应该是 (1,5000,1)。 (然后使用return_sequences=True)。否则标签为(1,1)


    或者,您可能希望将单个序列拆分为多个片段,例如,在经典的滑动窗口案例中,您将有许多时间步长较短的样本,例如(4998,3,1),假设您想要一个 3 - 步骤窗口。然后标签应该如下:(4998,1)

    【讨论】:

    • 如果使用lstm rnns,为什么要添加滑动窗口?这不是已经考虑到历史了吗?
    • 是的,他们有。这不是必需的,但它是一种选择,并且许多教程都表明了这一点(我也认为这不是最好的做法,但根据您的目的,它可能会起作用)。
    • 对于哪些应用程序的第一个轴没有 1?
    • 拥有多个序列的任何应用程序。想象一下,您有 2000 名客户,两年内每个月他们购买了 product1、product2 和 product3 的数量。 - (2000,24,3)
    • 谢谢。所以我只需要 numpy 代码就可以将二维 (5000,9) 特征数组转换为 (1,5000,9) 一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 2021-07-01
    • 2020-04-04
    • 1970-01-01
    • 2011-07-05
    • 2019-07-09
    相关资源
    最近更新 更多