增加辍学层使val损失保持低于火车损失,在此期间是否有恒定的泛化差距?
这是架构:
tf.keras.layers.CuDNNLSTM(1024,input_shape=(9,41),return_sequences=True) ,
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Dropout(0.4),
tf.keras.layers.CuDNNLSTM(512, return_sequences=True),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Dropout(0.4),
tf.keras.layers.CuDNNLSTM(256),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Dropout(0.4),
tf.keras.layers.Dense(3, activation=tf.nn.softmax)
答案 0 :(得分:1)
在使用Dropout层时这是正常现象,原因在于Dropout在训练过程中增加了噪声,训练损失略有增加,而泛化能力的提高使验证损失有所减少,从而产生了这种倒置效果见。
是的,具有这种泛化差距是正常的。
答案 1 :(得分:0)
无论训练损失是否高于验证损失,反之亦然或两者之间存在合理的差距,这始终是一种基于损失曲线解释损失曲线的更好方法。即使验证损失高于训练损失并且两者都持续减少,也可以继续训练[直到验证损失不再进一步优化为止]。
PS:在较深的层中使用丢弃比在浅层中总是更好,其原因是部分信息分解原理,因为浅层包含协同信息,而较深层包含唯一和冗余信息。