python - 在 tensorflow 中使用预训练的对象检测模型。使用了哪些参数?
问题描述
我想知道如何在 tensorflows 对象检测存储库中使用预训练模型。我不确定我是否理解正确。
这是对以下问题的扩展:link
我的想法:
Tensorflow 基于配置文件构建模型。现在它看看预训练的模型并迭代每一层。如果层按名称在两者之间匹配,则保留参数/权重,如果层不匹配则不保留。
假设我想使用 ssd mobilenet v1 coco 的预训练模型。我的新模型有 100 个类。tf 所做的是,它用旧值初始化与我的新模型的前 90 个类对应的卷积层,同时在训练开始时为其他类选择随机值。现在,如果我的新模型只有 10 个类,它们将使用预训练的 coco 模型的前 10 个类进行初始化。
或者
对应于类的特定卷积层与预训练模型的形状不匹配,因此不保留?因为在 SSD 中,用于确定分数/类别/框坐标值的卷积包含在多个卷积层中,每个卷积层对应一个不同的值。
解决方案
正如您自己所说,如果层不同 - 它不是从检查点/预训练模型加载的,而是被初始化的。如果你改变了类的数量,那么你就改变了相应的层,无论是全连接的(例如输出神经元的数量)还是卷积(通道的数量)。因此,如果您更改类的数量 - 所有受影响的层都会被初始化。
推荐阅读
- php - WooCommerce - 在管理员中保存/更新产品时修改产品的价格
- ios - 将 IAP 添加到我的应用:“App Store”下缺少部分?
- javascript - 使用多个组件一次加载 Google 地图
- docker - 对 Windows 服务进行 Docker 化
- node.js - 如何使用猫鼬在一个nodejs查询中更改两个不同的集合
- r - 错误:数值表达式有 6 个元素:只有第一个使用的和 GA 中的警告
- angular - 将vasturiano / `sunbrust-chart` 与 Angular 2-9 集成
- ios - 无法将 Bool 类型的值分配给类型 String 数据库表示
- windows - 通过 Windows 上的文件和管道模拟键盘输入到批处理文件
- python - AWS 实时视频中的人体检测