对于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).
我的理解是,根据
training = True
或training = False
的情况,将应用dropout技术。然而,我不确定哪个值会应用dropout技术(即哪个处于训练模式)。鉴于这是一个可选参数,我原以为tf.layers.dropout()默认会应用,但实际上默认值是False
,这很让人困惑,因为 intuitively training=False
似乎意味着默认情况下不处于训练模式。看起来,要实际应用tf.layers.dropout(),需要像下面这样做:
tf.layers.dropout(input, 0.5, training=mode==Modes.TRAIN)
从文档中并不容易看出这一点,因为training
是一个可选参数。这是否是正确实现
tf.layers.dropout
的方法?为什么training
标志不自动与Modes.TRAIN
绑定作为默认值,然后需要针对其他情况进行调整呢?默认值为training=False
似乎非常具有误导性。