首页 > 解决方案 > 在 tensorflow 中使用预训练的对象检测模型。使用了哪些参数?

问题描述

我想知道如何在 tensorflows 对象检测存储库中使用预训练模型。我不确定我是否理解正确。

这是对以下问题的扩展:link

我的想法
Tensorflow 基于配置文件构建模型。现在它看看预训练的模型并迭代每一层。如果层按名称在两者之间匹配,则保留参数/权重,如果层不匹配则不保留。

假设我想使用 ssd mobilenet v1 coco 的预训练模型。我的新模型有 100 个类。tf 所做的是,它用旧值初始化与我的新模型的前 90 个类对应的卷积层,同时在训练开始时为其他类选择随机值。现在,如果我的新模型只有 10 个类,它们将使用预训练的 coco 模型的前 10 个类进行初始化。

或者

对应于类的特定卷积层与预训练模型的形状不匹配,因此不保留?因为在 SSD 中,用于确定分数/类别/框坐标值的卷积包含在多个卷积层中,每个卷积层对应一个不同的值。

标签: pythontensorflowmachine-learning

解决方案


正如您自己所说,如果层不同 - 它不是从检查点/预训练模型加载的,而是被初始化的。如果你改变了类的数量,那么你就改变了相应的层,无论是全连接的(例如输出神经元的数量)还是卷积(通道的数量)。因此,如果您更改类的数量 - 所有受影响的层都会被初始化。


推荐阅读