首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tensorflow中任何预训练模型的子集

tensorflow中任何预训练模型的子集
EN

Stack Overflow用户
提问于 2018-02-09 18:43:34
回答 2查看 282关注 0票数 0

我们可以在tensorflow中获取任何预训练模型的子集吗?例如,如果我们有一个预先训练的模型,可以检测545个目标,我们可以使这个模型的子集只能检测20个目标,这样就可以减少加载模型和检测过程所需的时间。

EN

回答 2

Stack Overflow用户

发布于 2018-02-09 19:30:53

最多只能减少仅与最后一个(输出)层相关的权重。因此,如果倒数第二层的大小是1000,那么它将减少(1000 * 545 - 1000 * 20) = 525000的参数。

但是,如果你的网络很深,这不会证明是一个很好的加速,因为你仍然需要计算除最后一层之外的所有其他层。

票数 0
EN

Stack Overflow用户

发布于 2018-02-09 19:35:23

你可以,但这是一个不可忽略的工作量,它不会实质上提高速度。

实际上,您需要更改的只是类预测层,您必须将其从n_featuresx545减少到n_featuresx20。通常在那个阶段你有n_features=7*7=49 (尽管它实际上取决于你使用的方法;这对于使用通常设置的更快的RCNN是正确的),所以你可以为每幅图像保存大约26k参数和8million操作(考虑每幅图像300次检测),与对象检测模型中通常涉及的数百万个参数和数十亿次操作相比,这可以忽略不计。

在不重新训练的情况下改变预测层,虽然保持训练值不是直接的,但你必须编写一段代码来手动修改网络。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48704066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档