caffe训练cnn调参
2016-11-30 17:26
337 查看
目前用过的cnn调参方法都是降低学习率,并且在降低的时候是一点点降低。
1.来自知乎上的回答:
链接:https://www.zhihu.com/question/29901947/answer/46027216
如果你不求state of the art,0.0x的learning rate,0.9x的momentum (1 <= x <= 5),再加少量learning rate decay就可以开始了,还有别忘了一定要加dropout。其他都不用管。
如果你要state of the art performance,直接去找别人做的最好的。
如果你要超越state of the art。。。那问别人也没用,只有自己研究新方法
2.更改num_out以后,使用自己的数据集进行训练,网络中各层的参数都会更新。如果只想更新某一层的参数的做法如下回答:
链接:https://www.zhihu.com/question/35754716/answer/66561128
a. 你希望C层的参数不会改变,C前面的AB层的参数也不会改变,这种情况也就是D层的梯度不往前反向传播到D层的输入blob(也就是C层的输出blob 没有得到梯度),你可以通过设置D层的propagate_down为false来做到。
propagate_down的数量与输入blob的数量相同,假如你某个层有2个输入blob,那么你应该在该layer的Param里面写上两行:
propagate_down : 0 # 第1个输入blob不会得到反向传播的梯度
propagate_down : 0 # 第2个输入blob不会得到反向传播的梯度
这样的话,你这个layer的梯度就不会反向传播啦,前面的所有layer的参数也就不会改变了
b. 你希望C层的参数不会改变,但是C前面的AB层的参数会改变,这种情况,只是固定了C层的参数,C层得到的梯度依然会反向传播给前面的B层。只需要将对应的参数blob的学习率调整为0:
你在layer里面加上param { lr_mult: 0 }就可以了,比如全连接层里面:
layer {
type: “InnerProduct”
param { # 对应第1个参数blob的配置,也就是全连接层的参数矩阵的配置
lr_mult: 0 # 学习率为0,其他参数可以看caffe.proto里面的ParamSpec这个类型
}
param { # 对应第2个参数blob的配置,也就是全连接层的偏置项的配置
lr_mult: 0 # 学习率为0
}
}
1.来自知乎上的回答:
链接:https://www.zhihu.com/question/29901947/answer/46027216
如果你不求state of the art,0.0x的learning rate,0.9x的momentum (1 <= x <= 5),再加少量learning rate decay就可以开始了,还有别忘了一定要加dropout。其他都不用管。
如果你要state of the art performance,直接去找别人做的最好的。
如果你要超越state of the art。。。那问别人也没用,只有自己研究新方法
2.更改num_out以后,使用自己的数据集进行训练,网络中各层的参数都会更新。如果只想更新某一层的参数的做法如下回答:
链接:https://www.zhihu.com/question/35754716/answer/66561128
a. 你希望C层的参数不会改变,C前面的AB层的参数也不会改变,这种情况也就是D层的梯度不往前反向传播到D层的输入blob(也就是C层的输出blob 没有得到梯度),你可以通过设置D层的propagate_down为false来做到。
propagate_down的数量与输入blob的数量相同,假如你某个层有2个输入blob,那么你应该在该layer的Param里面写上两行:
propagate_down : 0 # 第1个输入blob不会得到反向传播的梯度
propagate_down : 0 # 第2个输入blob不会得到反向传播的梯度
这样的话,你这个layer的梯度就不会反向传播啦,前面的所有layer的参数也就不会改变了
b. 你希望C层的参数不会改变,但是C前面的AB层的参数会改变,这种情况,只是固定了C层的参数,C层得到的梯度依然会反向传播给前面的B层。只需要将对应的参数blob的学习率调整为0:
你在layer里面加上param { lr_mult: 0 }就可以了,比如全连接层里面:
layer {
type: “InnerProduct”
param { # 对应第1个参数blob的配置,也就是全连接层的参数矩阵的配置
lr_mult: 0 # 学习率为0,其他参数可以看caffe.proto里面的ParamSpec这个类型
}
param { # 对应第2个参数blob的配置,也就是全连接层的偏置项的配置
lr_mult: 0 # 学习率为0
}
}
相关文章推荐
- caffe配置:自己训练模型并测试
- caffe学习笔记13-caffe写训练日志
- 【caffe】使用自己的图像数据训练lenet并用opencv进行预测
- caffe训练图片分类遇到一些问题
- 【Caffe】训练ImageNet模型
- Windows caffe (二) cifar10 demo 训练与测试
- Caffe训练AlexNet网络,精度不高或者为0的问题结果
- ubutnu16.04+caffe+cuda8.0+NVIDIA TX2环境下,Faster RCNN 训练中的一些问题及解决办法
- Caffe 训练时loss等于87.33的原因及解决方法
- windows环境Caffe安装配置步骤(无GPU)及mnist训练
- 从Caffe源码分析训练过程
- Ubuntu下caffe:用自己的图片训练并测试AlexNet模型
- 使用GPU在caffe上进行CNN训练
- caffe示例实现之4在MNIST手写数字数据集上训练与测试LeNet
- Caffe训练测试时出现的错误:***check failure stack trace:***
- caffe训练流程
- Caffe图片训练分类研究、深度学习图片分类
- caffe中使用crop_size剪裁训练图片
- Linux下配置Caffe及其Python接口全过程记录(Ubuntu15.10_amd64+CUDA7.5)及训练mnist数据集
- sphereFace人脸识别之caffe配置训练