辍学层是否应用于 Keras 中的验证数据? TLDR;

问题描述

所以我知道基于模型进行预测时,不会包括 dropout 层,因为它故意使模型出错。然而,这些层是否仍会应用于每个 epoch 的验证数据测试中?

解决方法

dropout 的目标是确保模型最终不会过度依赖一组节点,同时几乎完全忽略其他节点(这会导致过度拟合),而是强制模型依赖于所有节点网络。这是通过在该层的训练过程中对节点的输入应用位掩码(指定 dropout 比例的 0 和 1)来完成的。这类似于在训练时关闭一定比例的神经元,因此模型现在被迫最小化损失,同时取决于当前 on 的节点。每个批次都会刷新此位掩码。

验证是在样本外数据上完成的,是一项推理任务而不是训练任务。在每个时期结束时,一旦从完整数据集中遍历批次后更新梯度,就会对验证数据进行推断。这涉及到 COMPLETE GRAPH 的前向计算并忽略 dropouts,因为它们仅用于在训练期间对模型进行正则化。

TLDR;

  • 问:Keras 中的验证数据是否应用了 dropout 层?
  • 答:没有。

参考 Keras documentation -

请注意,仅当训练设置为 True 时才会应用 Dropout 层,以便在推理过程中不会丢弃任何值。