tensorflow - 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()
?
谢谢你的帮助!
解决方案
这实际上是新版本中已弃用的功能。某些层(BatchNorm - Dropout)在训练和测试中表现不同。
通过tf.keras.backend.set_learning_phase(True)
您实际上将它们置于训练模式,以便它们处于活动状态。您希望在进行预测时禁用它们。
有关更多信息,请查看来源。
推荐阅读
- c# - 如何使用此 linq 查询获取驱动程序 ID 列
- swift - iphone 5s 中不显示 UIView 阴影
- google-apps-script - 根据问题答案的数量限制 Google 表单提交
- sql - 基于日期时间参数的动态查询
- angular - 将模板内容绑定到 Observable
- python - Keras/TensorFlow - numpy 与张量性能
- html - 如何折叠在显式声明的 CSS 网格布局中没有内容的行(删除行)?
- git - 如何修复推送失败的意外 HTTP 状态代码:500 GitKraken
- c# - 具有相互计算依赖性的属性,例如向量及其极坐标表示
- python - 如何在没有 odoo 记录的情况下转储设置?