如何将2d数组转换为keras + LSTM需要的格式

时间:2017-11-10 17:34:22

标签: python machine-learning tensorflow keras

我有一个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可接受的格式?

1 个答案:

答案 0 :(得分:3)

格式为(samples, timeSteps, features)

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

然后格式为(1,5000,9)

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

或者,您可能希望在经典滑动窗口的情况下将您的单个序列拆分为多个段,例如,您有许多样本的时间步长较少,例如(4998,3,1),假设您需要一个3步的窗口。然后标签应遵循:(4998,1)