我目前正在尝试测试LSTM RNN和GRU RNN之间在时间序列预测方面的行为差异(如果时间序列上升或下降,则分类为1/0)。我使用fit_generator方法(如KerasFrançoisChollet书中所述)
我向网络提供30点,下一点必须分类为向上或向下。训练集样本重新洗牌,而验证样本当然不是。
如果我不更改学习率的默认值(adam算法为10-3),那么通常情况下,训练集往往会在一定数量的时期后过度拟合,对于LSTM和GRU单元都是如此。< / p>
请注意,我的图是用10次模拟平均的(这样我摆脱了特定的权重随机初始化)
如果我选择较低的学习率,训练和验证的准确性在下面看到不同学习率的影响,我觉得训练集不能再适合了(???)
learning rate impact on GRU network
当我比较LSTM和GRU时,更糟糕的是,验证集的准确度高于LSTM案例中的训练集。对于GRU情况,曲线很接近,但训练集仍然较高
请注意,1层LSTM
的重点较少我已经用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案例的影响