迁移学习之caffe训练的层设置

本文探讨了迁移学习的意义及优势,并介绍了如何在Caffe框架中实现特定层的训练,包括通过设置propagate_down参数来阻止某些层的更新,以及通过调整lr_mult参数来冻结指定层。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一/为什么会有迁移学习:

         在模型的训练过程中, 当你有充分的数据时, 你可以将你的网络随机初始化, 进行从头的训练参数过程, 但这个过程可能很长和很痛苦;

          因为模型的前几个层中, 主要学习到的特征是图像的轮廓, 或其他特征, 在在最后的几层才是分类或回归的高级特征,

          因此人们往往利用别人已经训练好的模型,而修改最后几层,来达到自己的目的,  而且只训练最后几层, 你的要求训练集会很小。

个人感觉迁移学习的好处:

          借用别人的训练参数, 节省训练时间;

          可减少自身项目中对图片训练集的要求。


二、那么进行迁移学习时: 如何设置caffe中的模型呢?

         这分为2个情况:

         2.1     假设有A B C 三个层, 你只想训练C层, 而A和B 不动,  那么你需要设置C层网络的参数 propagate_down; 这个参数的作用是,阻止反向传播向前传播, 不传播了,自然A和B的参数不会被修改。  看一下caffe代码中的解释:

  // Specifies whether to backpropagate to each bottom. If unspecified,
  // Caffe will automatically infer whether each input needs backpropagation
  // to compute parameter gradients. If set to true for some inputs,
  // backpropagation to those inputs is forced; if set false for some inputs,
  // backpropagation to those inputs is skipped.
  //
  // The size must be either 0 or equal to the number of bottoms.
  repeated bool propagate_down = 11;
 

                情况二:

              2.2            你想训练A和C层, 而只有B层不训练, 则, 你需要将B层的参数, 步长系数  lr_mult: 设置为0, 这样,在这个层中, 返回来的梯度该变量与0 相乘, 则该层的参数不会改变,而继续向前传播到A层。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值