caffe 如何让反向传播不更新某些层
来源:互联网 发布:手机三维立体制图软件 编辑:程序博客网 时间:2024/06/10 23:42
caffe程序中,有时候我们不需要更新某些层,那么我们该怎么做呢?
假设共有5个卷积层,conv1,conv2,conv3,conv4,conv5
为了方便,假设只有这5个卷积层,没有pool层与relu层
卷积层的定义为
layer
{
name:"conv1"
type:"Convolution"
bottom: "data"
top: "conv1"
convolution_param {
num_output: 64
pad: 1
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
}
}
}
1.如果希望conv1,conv2,conv3都不更新,
那么在conv4的layer定义中,可以添加一句propagate_down : 0
即将层定义修改为:
layer
{
name:"conv4"
type:"Convolution"
bottom: "conv3"
top: "conv4"
propagate_down : 0
convolution_param {
num_output: 64
pad: 1
kernel_size: 3
stride: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
}
}
}
通过增加的propagate_down : 0,反向传播会终止在conv4层,忽略conv1,conv2,conv3
2.如果只是希望conv3不更新,conv1,conv2与conv4,conv5都更新:
那么可以将conv3的学习率设为0
即:
layer {
name: "conv3"
type: "Convolution"
bottom: "conv2"
top: "conv3"
param {
lr_mult: 0.000000
}
param {
lr_mult: 0.000000
}
convolution_param {
num_output: 64
kernel_size: 3
stride: 1
pad: 1
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
}
}
}
将weight_filter与bias_filter的学习率均设为0即可
参考:https://zhidao.baidu.com/question/363059557656952932.html
- caffe 如何让反向传播不更新某些层
- pooling层是如何反向传播的?
- caffe 源码学习(4)_反向传播权重更新
- caffe中如何设置某层不参与反向传播
- caffe控制层传播
- (Caffe,LeNet)反向传播
- caffe源码 池化层 反向传播
- Cffe技巧之如何取消某层反向传播
- (Caffe,LeNet)反向传播(六)
- Caffe中的反向传播代码理解
- (Caffe,LeNet)反向传播(六)
- BP神经网络,BP推导过程,反向传播算法,误差反向传播,梯度下降,权值阈值更新推导,隐含层权重更新公式
- caffe学习笔记3.2--前向传播和反向传播
- 深度学习之caffe 前向传播和反向传播
- caffe学习笔记3.2--前向传播和反向传播
- Caffe源码解读:relu_layer前向传播和反向传播
- Caffe源码解读:dropout_layer的正向传播和反向传播
- Caffe学习笔记—Caffe反向传播计算
- 一定要紧跟政治步伐
- 持续集成工具Jenkins的安装和使用
- MVC与WebForm的区别
- 横向滑动菜单, HorizontalScrollView,fragment,Viewpager结合使用
- 一个简单的敌人自动寻找玩家进行攻击及受到伤害死亡效果实现
- caffe 如何让反向传播不更新某些层
- oracle12c没有scott用户
- c++学习笔记--行为像值的类
- 关于数据库操作的触发器
- PIL资料汇总
- 详细:idea如何设置类头注释和方法注释
- 【技术】【总结】Unity中HideInInspector和SerializeField一起使用
- Linux下Keepalived 安装与配置 此博文包含图片
- 数据结构和算法关系