对于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标志不会自 Action 为默认值绑定(bind)到Modes.TRAIN,然后需要针对其他情况进行调整?默认为training=False似乎很容易引起误解

最佳答案

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

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

关于python - 如何解释tf.layers.dropout培训arg,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48773872/

10-12 23:01