如何解释tf.layers.dropout培训arg

ree*_*106 6 python tensorflow

对于我来说不清楚arg tf.layers.dropout()的文档training

文档指出:

training: Either a Python boolean, or a TensorFlow boolean scalar tensor
      (e.g. a placeholder). Whether to return the output in training mode
      (apply dropout) or in inference mode (return the input untouched).
Run Code Online (Sandbox Code Playgroud)

我的理解是,这取决于是否training = Truetraining = False辍学将被应用。但是,我不清楚是否TrueFalse将应用辍学(即处于培训模式)。鉴于这是一个可选的参数,我预计tf.layers.dropout()将在默认情况下适用,但默认情况下False它直观地training=False将表明默认是不训练。

为了使tf.layers.dropout()实际应用,似乎需要类似以下内容:

tf.layers.dropout(input, 0.5, training = mode == Modes.TRAIN)

从我的文档来看,这不是很明显,因为这training是一个可选参数。

这似乎是的正确实现tf.layers.dropout吗?为什么training不自动将标志绑定Modes.TRAIN为默认标志,然后针对其他情况进行调整?默认training=False似乎很容易误导

小智 2

你的解释dropout()及其training论点是正确的。Modes.TRAIN但是,按照您的建议进行自动检查是不可能的。模式通常作为可选参数与估计器相关联。 model_fn()估计器构成了更高级别的抽象,并且在 TensorFlow 模型中不是必需的。

至于为什么 TensorFlow 将其 API 设计为false默认值,我们只能推测。一种解释是,layers整个抽象旨在默认为推理模式,从而解释了dropout() training默认值。