如何解释tf.layers.dropout training arg

时间:2018-02-13 19:05:27

标签: python tensorflow

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

documentation州:

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).

我的解释是,取决于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似乎非常具有误导性

1 个答案:

答案 0 :(得分:1)

您对dropout()及其training参数的解释是正确的。但是,您建议的自动Modes.TRAIN检查是不可能的。模式通常与estimator model_fn()绑定为可选参数。估计器构成了更高级别的抽象,在TensorFlow模型中不是必需的。

至于为什么TensorFlow使用false默认值设计他们的API,我们只能推测。解释是layers抽象作为一个整体意图默认为推理模式,从而解释dropout() training默认值。