Python 如何将2d数组转换为keras+;LSTM需要

Python 如何将2d数组转换为keras+;LSTM需要,python,machine-learning,tensorflow,keras,Python,Machine Learning,Tensorflow,Keras,我有一个5000×92d numpy特征数组trainX,它们是时间序列的特征。我还有一个浮点功能标签的1d numpy数组trany。例如,这正是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

我有一个
5000×9
2d numpy特征数组
trainX
,它们是时间序列的特征。我还有一个浮点功能标签的1d numpy数组
trany
。例如,这正是
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需要一种不同的格式。我读过手册,但我不明白这到底是什么

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

格式为
(示例、时间步、功能)

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

那么格式是
(15000,9)

如果每个时间步有一个标签,则标签也应为
(15000,1)
。(然后使用
return\u sequences=True
)。否则标签为
(1,1)


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

格式为
(示例、时间步、功能)

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

那么格式是
(15000,9)

如果每个时间步有一个标签,则标签也应为
(15000,1)
。(然后使用
return\u sequences=True
)。否则标签为
(1,1)



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

如果使用lstm RNN,为什么要添加滑动窗口?这还没有考虑到历史吗?是的,他们考虑到了。这不是必须的,但它是一个选项,很多教程都显示了这一点(我也认为这不是最好的做法,但可能,根据您的目的,它可能会起作用)。对于哪些应用程序,第一个轴中没有1?有多个序列的任何应用程序。假设你有2000名客户,两年内每个月你都有他们购买产品1、产品2和产品3的数量。-<代码>(2000,24,3)谢谢。因此,我只需要numpy代码就可以将2d(5000,9)功能数组转换为(15000,9)功能数组。如果使用lstm RNN,为什么要添加滑动窗口?这还没有考虑到历史吗?是的,他们考虑到了。这不是必须的,但它是一个选项,很多教程都显示了这一点(我也认为这不是最好的做法,但可能,根据您的目的,它可能会起作用)。对于哪些应用程序,第一个轴中没有1?有多个序列的任何应用程序。假设你有2000名客户,两年内每个月你都有他们购买产品1、产品2和产品3的数量。-<代码>(2000,24,3)谢谢。所以我只需要numpy代码来将2d(5000,9)特征数组转换为看起来的(15000,9)特征数组。