随着学习率变小,验证集的准确度高于LSTM RNN的训练集

时间:2018-05-31 11:55:57

标签: python keras deep-learning lstm recurrent-neural-network

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

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

如果我不更改学习率的默认值(adam算法为10-3),那么通常情况下,训练集往往会在一定数量的时期后过度拟合,对于LSTM和GRU单元都是如此。< / p>

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案例的影响

0 个答案:

没有答案