我正在尝试使用 LSTM(与 Keras)来解决时间序列问题。鉴于其先前的值,我想预测时间序列的下一个值。我正在使用 TimeseriesGenerator 创建训练数据,如下所示(设置长度等于 1,表示预测基于先前的值):
generator = TimeseriesGenerator(series, series, length=1, batch_size=10)
对于建模,我使用以下内容:
model = Sequential()
model.add(LSTM(num_units, activation='relu', input_shape=(n_input, n_features)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')
model.fit_generator(generator, steps_per_epoch=len(generator)/n_batch, epochs=50)
预测:
yhat = model.predict(x_input, verbose=0)
当我设置时num_units = 1(在第一层),预测值远低于时间序列中的典型值(时间序列中的典型值为30-50,预测在0.4左右)。但是,当我设置 时num_units = 700,预测值变得非常接近测试值,并且预测似乎过拟合。这是为什么?num_units第一层中的 直观代表什么?如果我们的输入数据只是一个数字,那么拥有 700 个单元的层意味着什么?将一个数字映射到 700 个神经元背后的直觉是什么,从中得到什么?一般来说,如果在我们的时间序列中,我们试图从过去的 n 次观察中做出预测,那么第一个 LSTM 层应该有多少个单元?