gpt4 book ai didi

python - TensorFlow 对象检测 API : classification weights initialization when changing number of classes at training using pre-trained models

转载 作者:行者123 更新时间:2023-11-30 09:07:07 24 4
gpt4 key购买 nike

我不仅想利用特征提取器预训练权重,还想利用特征映射层的分类器/定位预训练权重,使用 tensorflow 对象检测 API 来微调 tensorflow 对象检测模型 (SSD)。当我的新模型的类数量与我用于微调检查点的预训练模型不同时,TensorFlow 对象检测 API 将如何处理分类权重张量?

在 SSD 等 ML 对象检测模型中微调预训练模型时,我不仅可以使用预训练权重初始化特征提取器权重,还可以初始化特征图的定位层权重和分类层权重,后者只选择预训练的类别权重,这样我就可以减少模型最初可以识别的类别数量(例如从 90 个 MSCOCO 类别到这 90 个类别中选择的类别,例如仅汽车和行人等) .)
https://github.com/pierluigiferrari/ssd_keras/blob/master/weight_sampling_tutorial.ipynb
这就是它在 keras 模型(即 h5 文件)中的完成方式,我也想在 Tensorflow 对象检测 API 中执行相同的操作。似乎在训练时我可以在配置 protobuf 文件中指定新模型将具有的类数量,但由于我是 API(和 tensorflow )的新手,所以我无法遵循源结构并了解微调时如何处理该数字。我知道的大多数 SSD 模型只是忽略并初始化分类权重张量,以防预训练模型的类权重形状与新模型的分类权重形状不同,但我想保留必要的分类权重并对其进行训练。另外,我该如何在 API 结构中做到这一点?
谢谢!

最佳答案

当我通读代码时,我发现了负责的代码,如果新定义的模型和预训练模型之间的层的形状匹配,则该代码仅保留预训练模型的权重。因此,如果我改变类的数量,分类器层的形状就会改变,并且预训练的权重不会保留。

https://github.com/tensorflow/models/blob/master/research/object_detection/utils/variables_helper.py#L133

关于python - TensorFlow 对象检测 API : classification weights initialization when changing number of classes at training using pre-trained models,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49374984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com