caffe增加新分支后固定参数进行finetuning

    caffe训练时正常的finetuning只需要在调用训练脚本时通过--weights选项指定好caffemodel即可,这种方式在finetuning的过程中会更新所有参数。我现在有个需求,要在已训练好的网络结构中增加一个新的分支,而finetuning时固定已经训练好的参数,只单独训练这个新分支的参数,怎么做?

   方式一:

  1. 首先,你需要这个新网络的初始caffemodel,这个caffemodel里面除了新增分支以外的其它参数来自于老网络已训练好的caffemodel,新分支则为默认参数;
  2. 在新网络的prototxt中将新分支以外的含有参数的层新增lr_mult参数,并设置为0。意思就是将学习率乘以0,也就是不更新参数(参考以下配置,亲测ok)。
layer {
type: "InnerProduct"
param { # 对应第1个参数blob的配置,也就是全连接层的参数矩阵的配置
    lr_mult: 0 # 学习率为0,其他参数可以看caffe.proto里面的ParamSpec这个类型
}
param { # 对应第2个参数blob的配置,也就是全连接层的偏置项的配置
    lr_mult: 0 # 学习率为0
}
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值