了解 keras 的 LSTM 输入形状

数据挖掘 喀拉斯 张量流 lstm
2021-09-27 14:35:30

我正在学习 LSTM 网络。输入需要是 3D 的。所以我有一个 CSV 文件,其中包含 9999 个数据,只有一个功能。所以它只有一个文件。

所以通常(9999,1)我会用时间步长 20 步来重塑

timesteps = 20
dim = data.shape[1]
data.reshape(len(data),timesteps,dim)

但我收到以下错误

ValueError:无法将大小为 9999 的数组重新整形为形状 (9999,20,1)

和 LSTM 中的输入

model.add(LSTM(50,input_shape=(timesteps,dim),return_sequences=True, activation="sigmoid"))
2个回答

(9999,1) 有 9999*1 个元素 = 9999。但是,(9999,20,1) 将有 9999*20*1 个元素,这些元素不可用。将您的数据分解为 99 的批次/序列长度。然后将其重塑为 (101,99,1)

RNN 输入形状为 batch_size x sequence_length x nbr_features。

相信您需要正确地预处理和设置您的训练数据。您需要从可用数据中生成多个训练示例。

我不确定您的数据是什么样的。从可用信息来看,您似乎有 9999 个数据点用于依赖的功能。我将朝着以下方向前进,类似于基于条件概率构建的 CBOW 模型。

  1. 首先确定你的序列长度(比如 25)
  2. 从可用的原始数据生成多个训练示例(第 26 个是预测器输出)
  3. 继续培训。