tf.layers.dropout()
training
arg的文档对我来说并不清楚。
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
标志不会自动绑定到Modes.TRAIN
作为默认值,然后需要针对其他情况进行调整?默认为training=False
似乎非常具有误导性
答案 0 :(得分:1)
您对dropout()
及其training
参数的解释是正确的。但是,您建议的自动Modes.TRAIN
检查是不可能的。模式通常与estimator model_fn()
绑定为可选参数。估计器构成了更高级别的抽象,在TensorFlow模型中不是必需的。
至于为什么TensorFlow使用false
默认值设计他们的API,我们只能推测。解释是layers
抽象作为一个整体意图默认为推理模式,从而解释dropout() training
默认值。