tf.keras.backend.set_learning_phase 实际上是做什么的?

What does tf.keras.backend.set_learning_phase actually do?

我正在尝试使用 Efficientnet 进行某些对象检测,并在提供一些图像之前加载其检查点。如果我在进行预测之前设置 tf.keras.backend.set_learning_phase(True) 会导致错误的预测。我的意思是它只有 2 个检测结果高于 0.5 阈值(图像中大约有 10 个人)。但是,如果我有 tf.keras.backend.set_learning_phase(False) 并进行预测,它会有更多的检测(大约 8 个)并且阈值范围为 0.7 - 0.94。 为什么会根据 tf.keras.backend.set_learning_phase() 调用发生这种情况?

感谢您的帮助!

那个实际上是新版本中弃用的功能。某些层(BatchNorm - Dropout)在训练和测试中表现不同。

通过 tf.keras.backend.set_learning_phase(True) 你实际上让他们处于训练模式所以他们很活跃。您希望在进行预测时禁用它们。

更多检查the source