我目前正在尝试测试LSTM RNN和GRU RNN之间在时间序列预测上的行为差异(如果时间序列上升或下降,则分类为1/0) . 我使用fit_generator方法(如KerasFrançoisChollet书中所述)

我向网络提供30点,下一点必须分类为向上或向下 . 训练集样本重新洗牌,而验证样本当然不是 .

如果我没有改变学习率的默认值(adam算法的10-3)那么通常会发生,训练集往往会在一定数量的时期之后过度拟合,对于LSTM和GRU单元都是如此 .

LSTM 1 layer 128N

请注意,我的图是平均10个模拟(这样我摆脱了特定的权重随机初始化)

如果我选择较低的学习率,训练和验证准确度见下面不同学习率的影响,在我看来训练集不能再适合了(???)

learning rate impact on GRU network

当我比较LSTM和GRU时,更糟糕的是,验证集的准确度高于LSTM案例中的训练集 . 对于GRU情况,曲线很接近,但训练集仍然更高

2 layer LSTM LR=1e-5

2 layer GRU LR=1e-5

请注意,对于1层LSTM,这一点不太重要

1 layer LSTM LR=1e-5

我已经用1或2层测试了这个并且用于不同的验证集,但结果是相似的 .

我的代码摘录如下:

modelLSTM_2a = Sequential()
modelLSTM_2a.add(LSTM(units=32, input_shape=(None, data.shape[-1]),return_sequences=True))
modelLSTM_2a.add(LSTM(units=32, input_shape=(None, data.shape[-1]),return_sequences=False))
modelLSTM_2a.add(Dense(2))
modelLSTM_2a.add(Activation('softmax'))
adam  = keras.optimizers.Adam(lr=1e-5, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
modelLSTM_2a.compile(optimizer= adam, loss='categorical_crossentropy', metrics=['accuracy'])

有人会对可能发生的事情有所了解吗?

我对这种行为感到困惑,尤其是LSTM案例中学习率的影响