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)特征数组。