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

Guo*_*uai 8 keras tensorflow

在 TensorFlow 的官方文档中,它们总是training=True在训练循环中调用 Keras 模型时通过,例如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.
Run Code Online (Sandbox Code Playgroud)

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

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

xdu*_*ch0 15

一些神经网络层在训练和推理过程中表现不同,例如 Dropout 和 BatchNormalization 层。例如

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

training参数让图层知道它应该采用两条“路径”中的哪一条。如果此设置不正确,您的网络可能不会按预期运行。

  • 这有点模棱两可。这是否意味着模型在训练模式下“评估”,或者模型在“训练”时评估? (2认同)