Keras LSTM 尺寸

数据挖掘 神经网络 喀拉斯 lstm
2021-09-16 03:41:12

我正在尝试在 Keras 中构建一个 RNN。我正在输入一个包含 300K 值的数组。我有 4 个自变量(W,X,Y,Z)和 1 个因变量f(W,X,Y,Z)

然后将数组拆分为 270K 用于训练,30K 用于验证。

当我尝试将我的数据放入网络时,它会显示"expected ndim=3, found ndim=4".

我的模型看起来像这样

model=Sequential()
model.add(LSTM(4, input_shape=(270000,4)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer ='adam')
model.fit(X_tr,Y_tr, validation_data=(X_val, Y_val),
          epochs=10, batch_size=30000, verbose=1)
1个回答

在创建 RNN 时,我们通常假设存在一些时间相关性,例如:数据具有时间序列性质,例如股票价格。我们可以将 30 天的窗口视为单个样本的时间步长。

在为 LSTM 层创建输入数据时,您需要考虑一个样本中包含多少时间步,并将数据放入该形状。输入形状应为 (number_of_sample, num_timesteps, num_features):

查看此答案以获取更多信息

然后您的数据可能会被重塑:

new_shape = data.reshape((None, 100, 4))       # new input shape to LSTM
  • None 意味着您可以让样本数量为任何必要的数量,以适应​​您的原始数据形状。
  • 100 意味着您将 100 个连续数据点/时间步作为单个样本传递
  • 4 是您的独立变量(特征)的数量

reshape如果您的数据无法重塑以制作您想要的尺寸,那可能会引发错误。您可能需要修剪数据(即留下一些最旧的样本)