caffe中怎么固定前面的网络参数,训练后面层的参数

caffe中怎么固定前面的网络参数,训练后面层的参数,第1张

1、会更新,finetune的过程相当于继续训练,跟直接训练的区别是初始化的时候:
a 直接训练是按照网络定义指定的方式初始化(如高斯随机初始化)
b finetune是用你已经有的参数文件来初始化(就是之前训练好的caffemodel)
2、嗯,这个问题有两种情况:比如有4个全连接层A->B->C->D
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,其他参数可以看caffeproto里面的ParamSpec这个类型
}
param { # 对应第2个参数blob的配置,也就是全连接层的偏置项的配置
lr_mult: 0 # 学习率为0
}
}
不知道这样说你能不能理解

深度学习用Visual Basic。 目前主流的编程软件VisualBasic的版本是VisualBasic 60专业版。我们所使用的 *** 作系统是Windows10。 先把VisualBasic 60的安装光盘放入电脑的光盘驱动器中,通常电脑能够自动运行光盘上的安装程序

确定的说,caffe是可以做回归的。因为神经网络本质上是一个非常复杂的非线性函数,合理设计其网络结构,它的输出值的范围是可以覆盖你的回归目标的范围的。具体例子,可以参考唐晓鸥团队利用卷积神经网络做的人脸关键点定为,这是利用神经网络做回归的一个典型例子。

1 cifar10数据库
60000张3232 彩色 共10类
50000张训练
10000张测试
下载cifar10数据库
这是binary格式的,所以我们要把它转换成leveldb格式。
2 在/caffe-windows/examples/cifar10文件夹中有一个 convert_cifar_datacpp
将他include到MainCallercpp中。如下:
编译我是一次就通过了 ,在bin文件夹里出现convert_cifar_dataexe。然后 就可以进行格式转换。binary→leveldb
可以在bin文件夹下新建一个input文件夹。将cifar10binary文件放在input文件夹中,这样转换时就不用写路径了。
cmd进入bin文件夹
执行后,在output文件夹下有cifar_train_leveldb和cifar_test_leveldb两个文件夹。里面是转化好的leveldb格式数据。
当然,也可以写一个bat文件处理,方便以后再次使用。
3 下面我们要求数据图像的均值
编译//tools/comput_image_meancpp
编译成功后。接下来求mean
cmd进入bin。
执行后,在bin文件夹下出现一个meanbinaryproto文件,这就是所需的均值文件。
4 训练cifar网络
在/examples/cifar10文件夹里已经有网络的配置文件,我们只需要将cifar_train_leveldb和cifar_test_leveldb两个文件夹还有meanbinaryproto文件拷到cifar0文件夹下。
修改cifar10_quick_trainprototxt中的source: "cifar-train-leveldb" mean_file: "meanbinaryproto" 和cifar10_quick_testprototxt中的source: "cifar-test-leveldb"
mean_file: "meanbinaryproto"就可以了,
后面再训练就类似于MNIST的训练。写一个train_quickbat,内容如下:
[plain] view plaincopy
copy \\\\bin\\MainCallerexe \\\\bin\\train_netexe
SET GLOG_logtostderr=1
"//bin/train_netexe" cifar10_quick_solverprototxt
pause
先编译一遍 train_netcpp
运行train_quickbat


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10408329.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-08
下一篇 2023-05-08

发表评论

登录后才能评论

评论列表(0条)

保存