首页 > 解决方案 > tf.keras.backend.set_learning_phase 实际上是做什么的?

问题描述

我正在尝试使用 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()

谢谢你的帮助!

标签: tensorflowtensorflow2.0

解决方案


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

通过tf.keras.backend.set_learning_phase(True)您实际上将它们置于训练模式,以便它们处于活动状态。您希望在进行预测时禁用它们。

有关更多信息,请查看来源


推荐阅读