caffe的proto里面的std是什么意思?怎么调?
请问caffe的proto中的std是什么意思?是在loss不下降的时候调吗?怎么调这个值?
convolution_param {
num_output: 96
kernel_size: 11
stride: 4
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
convolution_param {
num_output: 96
kernel_size: 11
stride: 4
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
3 个回复
李扬 - 密码六个一
赞同来自: ruirui_ICT 、attitude 、cjwdeq 、disheng 、天衣先生
> We initialized the weights in each layer from a zero-mean Gaussian distribution with standard deviation 0.01.
可知,Caffe 中的 std 就是上面的 standard deviation,用于随机初始化权重。既然是初始化,故名思议,那么也就只在起始阶段被调用,训练过程中就不再被调用。因此,训练过程不调这个值。loss 不下降时调的是 learning rate。至于以什么策略来调 learning rate,下面的两个问题总结的很好了:
http://caffecn.cn/?/question/9
http://caffecn.cn/?/question/18
Caffe 中所有的参数定义都在 `src/caffe/proto/caffe.proto` 里。可以把这个文件当字典查,遇到不知道什么意思的参数,就可以到这个文件里搜索一下。
http://arxiv.org/abs/1511.06422 这篇文章对初始化工作总结的还可以。现在常见的初始化方法有:
1)早期的逐层预训练初始化;
2)题主所问的 Gauss 随机初始化;
3)Xavier 初始化 《Understanding the difficulty of training deep feedforward neural networks》
4)MSRA 初始化 http://arxiv.org/abs/1502.01852
5) http://arxiv.org/abs/1511.06422 这篇新论文提的 LSUV 初始化,真实效果如何我也不确定
6)用 finetune 来初始化
attitude
赞同来自: xinmiao 、不可理喻 、李扬
disheng
赞同来自:
关于std的设置,可以参看何恺明ICCV2015的文章Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification,其中2.2节有关于参数初始化的详细论述。