fine-tuning

fine-tuning是微调的意思,是用别人训练好的模型(即pre-trained model),加上我们自己的数据,来训练新的模型。fine tune相当于使用别人的模型的前几层,来提取浅层特征,然后在最后再落入我们自己的分类中。

一般来说我们自己需要做的方向,比如在一些特定的领域的识别分类中,我们很难拿到大量的数据。因为像在ImageNet上毕竟是一个千万级的图像数据库,通常我们可能只能拿到几千张或者几万张某一特定领域的图像,比如识别衣服啊、标志啊、生物种类等等。在这种情况下重新训练一个新的网络是比较复杂的,而且参数不好调整,数据量也不够,因此fine-tuning微调就是一个比较理想的选择。

 

如果想网络中某几层参数不变,可以设置对应learning rate为0让这些层的参数不学习

 

关于fine-tuning两个比较好的博客:

http://www.cnblogs.com/louyihang-loves-baiyan/p/5038758.html

http://www.cnblogs.com/alexcai/p/5469478.html

知乎上的一个问题:

https://www.zhihu.com/question/35754716

 

实践中总结:对于fine-tuning,网络中层的名字一模一样的会复用参数,名字不一样的会去做初始化。

对于相同的名字的层,如果输入输出与fine-tuning的不一样,就会报如下错误:

很明显,报错是shape不一样。名字相同,会认为是同一个层,但实际的输入输出又不同,即参数个数都不相同,就会报错。

 

对于一个网络,fine-tuning的类是21类,你的类是2类,但你的网络结构与fine-tuning的几乎一模一样,只是输出的类别数目不同,这个时候你可以保持前面几层不变,改变最后一两层的输入输出,但这时也必须同时改已经修改了输入输出个数的层的名字。名字不相同了,就不会赋值而去初始化。如果不改,相同名字的层的shape不同了,又要报错。

转载于:https://www.cnblogs.com/ymjyqsx/p/6763869.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值