对于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 = True
或training = False
,将应用辍学。但是,我不清楚True
或False
是否将应用辍学(即处于训练模式)。鉴于这是一个可选参数,我希望默认情况下会应用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/