tensorflow - TensorFlow 对象检测 API:使用“fine_tune_checkpoint”进行训练 - 解冻较早的层?
问题描述
我正在使用 来自模型动物园的预训练网络的fine_tune_checkpoint
(原型链接)非常成功地训练模型。
然而,据我所知,使用迁移学习的微调变体,较早的层被冻结了。在训练期间只有最后一层实际更新。
这个假设是否正确,即它是否也在 TF 对象检测 API 中这样实现?
假设是这样,我现在想知道是否可以通过一段时间的训练来挤出更多的性能,而不会冻结早期的层。但是,我找不到在配置文件中在这两种训练模式之间切换的直接方法。有任何想法吗?
解决方案
默认训练配置训练所有权重。您正在微调的事实仅意味着您加载了一些/所有权重,而不是全部初始化它们(例如,从 ImageNet 预训练模型进行微调或从预训练检测模型进行微调)。为了冻结一些权重,您需要使用freeze_variables
训练配置中的选项按模式说明它们的名称。为了指定应该训练的变量,您可以使用相应的update_trainable_variables
. 可以通过在构建模型/图形后检查模型/图形来找到名称。
推荐阅读
- sql - JOIN 子句查找不重复的相关记录,导航外键链
- javascript - 是否有用于确认要上传的文件的事件侦听器?
- javascript - 没有缓存和加载更多的阿波罗客户端不起作用
- php - Laravel Livewire 更新数组复选框。(编辑表格)
- python - 无法使用 FLASK 附加包含动画的 css 文件
- continuous-integration - 赛普拉斯重试使测试始终通过
- android - EdgeW 在 Microsoft Edge 用户代理中是什么意思
- swift - 如何访问 Private API 框架中的方法并将值传递给它?
- c# - 我可以在 CMD.EXE 错误消息中抑制 CR/CRLF 序列吗?
- php - 为一个PHP系统设计一个数据库,它可以处理一个机构的时间表,可以管理标记和检查以前的出勤情况