调用TensorFlow Keras模型时`training = True`是什么意思?

时间:2019-08-02 05:22:20

标签: tensorflow keras

在TensorFlow的官方文档中,在训练循环中调用Keras模型(例如training=True)时,它们总是通过logits = mnist_model(images, training=True)

我尝试了help(tf.keras.Model.call),它表明了

Help on function call in module tensorflow.python.keras.engine.network:

call(self, inputs, training=None, mask=None)
    Calls the model on new inputs.

    In this case `call` just reapplies
    all ops in the graph to the new inputs
    (e.g. build a new computational graph from the provided inputs).

    Arguments:
        inputs: A tensor or list of tensors.
        training: Boolean or boolean scalar tensor, indicating whether to run
          the `Network` in training mode or inference mode.
        mask: A mask or list of masks. A mask can be
            either a tensor or None (no mask).

    Returns:
        A tensor if there is a single output, or
        a list of tensors if there are more than one outputs.

它表示training是布尔或布尔标量张量,表示是在 training模式还是推理模式中运行Network。但是我没有找到关于这两种模式的任何信息。

简而言之,我不知道该论点的影响。而且如果我在训练时错过了这个论点怎么办?

2 个答案:

答案 0 :(得分:3)

某些神经网络层在训练和推理期间的行为有所不同,例如Dropout和BatchNormalization层。例如

  • 在训练期间,辍学将随机辍学单位,并相应地扩大剩余单位的激活范围。
  • 在推断过程中,它什么也不做(因为您通常不希望在这里丢弃单元的随机性)。

training参数使图层知道应该采用两条“路径”中的哪一条。如果您对此设置不正确,则您的网络可能无法正常运行。

答案 1 :(得分:0)

请参考this答案。消除怀疑可能会有所帮助。此外,如果您需要,我可以提供更多说明。谢谢。