Keras 这是一个很好的模型,验证损失仍然低于列车曲线,或多或少是一个恒定的差距,因为两者都在减少?

Keras 这是一个很好的模型,验证损失仍然低于列车曲线,或多或少是一个恒定的差距,因为两者都在减少?,keras,deep-learning,batch-normalization,tf.keras,dropout,Keras,Deep Learning,Batch Normalization,Tf.keras,Dropout,添加辍学层使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), t

添加辍学层使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)

这在使用Dropout层时是正常的,原因是因为Dropout会给训练过程添加噪音,训练损失会增加一点,而增加的泛化能力会使验证损失减少一点,从而产生您看到的反转效果


是的,有这种普遍性差距是正常的。

根据损失曲线的进展来解释损失曲线总是更好的方法,不管培训损失是否高于验证损失,反之亦然,或者两者之间存在合理的差距。即使验证损失高于培训损失,继续培训也是完全可以的,并且两者都在不断减少[直到验证损失不再进一步优化]


PS:在深层使用辍学总是比在浅层使用好,其原因是部分信息分解原则,因为浅层包含协同信息,深层包含唯一和冗余信息。

谢谢,顺便问一下,如何确定辍学百分比?辍学率过高会导致不合身,我们是否需要找到正确的平衡?当这一差距开始缩小并在某一点相互交叉时,你认为会发生什么?如图所示,Val损失对应于模型的泛化。当val损耗的降低率开始降低时,这意味着模型开始稳定在最小损耗拓扑中。火车损失是一个经验误差,我们试图减少它,希望它与泛化误差相称,当然,在现实中,它们并不完全符合趋势。当列车损失比Val损失(如img)减少更多时,这意味着我们试图减少的经验误差(希望在一般情况下反映相同的结果)不再成立,但如果它们仍然优化,我们可以继续并忽略列车损失的夸大