我在训练中使用Tensorflow's Object Detection API。
在哪个文件中,定义了冻结层以在训练中微调模型。 我需要尝试在微调中更改冻结的图层。
例如,如果我使用Resnet50 configuration,可以在哪里更改冻结的图层?
答案 0 :(得分:1)
当然可以。
通过阅读proto文件进行培训,有一个名为freeze_variables
的字段,这应该是一个包含所有要冻结的变量的列表,例如在训练过程中将它们排除在外。
假设您要冻结第一个块的第一个单元中第一个瓶颈的权重,则可以通过添加
freeze_variables: ["resnet_v1_50/block1/unit_1/bottleneck_v1/conv1/weights"]
所以您的配置文件看起来像这样:
train_config: {
batch_size: 1
freeze_variables: ["resnet_v1_50/block1/unit_1/bottleneck_v1/conv1/weights"]
...
如图所示,权重不再具有train
操作。
通过为freeze_variables
选择特定的模式,您可以非常灵活地冻结变量(可以从tensorflow图中获取层名称)。
顺便说一句,here是实际的过滤操作。