首页 > 解决方案 > TensorFlow 对象检测 API:使用“fine_tune_checkpoint”进行训练 - 解冻较早的层?

问题描述

我正在使用 来自模型动物园的预训练网络的fine_tune_checkpoint (原型链接)非常成功地训练模型。

然而,据我所知,使用迁移学习的微调变体,较早的层被冻结了。在训练期间只有最后一层实际更新。

这个假设是否正确,即它是否也在 TF 对象检测 API 中这样实现?

假设是这样,我现在想知道是否可以通过一段时间的训练来挤出更多的性能,而不会冻结早期的层。但是,我找不到在配置文件中在这两种训练模式之间切换的直接方法。有任何想法吗?

标签: tensorflowobject-detection-api

解决方案


默认训练配置训练所有权重。您正在微调的事实仅意味着您加载了一些/所有权重,而不是全部初始化它们(例如,从 ImageNet 预训练模型进行微调或从预训练检测模型进行微调)。为了冻结一些权重,您需要使用freeze_variables训练配置中的选项按模式说明它们的名称。为了指定应该训练的变量,您可以使用相应的update_trainable_variables. 可以通过在构建模型/图形后检查模型/图形来找到名称。


推荐阅读