GRU层中的经常性辍学增加了航损值

时间:2020-03-09 15:30:40

标签: python keras deep-learning

我正在使用Keras通过耶拿气候数据集和GRU层来预测温度。当我将recurrent_dropout的值设置为大于0.1时,程序的准确性会显着下降,经过几轮后,即使丢失值不大,它也会变成NaN。没有recurrent_dropout的相同模型也可以正常工作。

作为学习的一部分,我正在从参考书中复制代码段,并且我希望不会遇到大问题。这是我正在处理的代码,我不明白问题出在哪里。

mean = float_data[:200000].mean(axis = 0)
float_data -= mean

std = float_data[:200000].std(axis = 0)
float_data /= std

model = Sequential()
model.add(layers.GRU(32, dropout = 0.2, recurrent_dropout = 0.2, input_shape = (None, float_data.shape[-1])))
model.add(layers.Dense(1))
model.compile(optimizer = RMSprop(), loss = 'mae')
history = model.fit_generator(train_gen, steps_per_epoch = 500, epochs = 40, validation_data = val_gen, validation_steps = val_steps)

1 个答案:

答案 0 :(得分:0)

在序列的每个时间步都应用递归辍学。因此,例如,如果(重复)辍学率为0.1,并且您正在通过长度传递长度为100的序列,则任何递归单元在序列末尾仍处于活动状态的概率为(.9 ^ 100 )= 1/37600。