从零开始,一步一步学习caffe的使用,期间贯穿深度学习和调参的相关知识!卷积层参数说明
1 |
|
卷积配置参数意义
卷积计算公式

卷积计算过程图示

上图取自CS231n,展示了三维卷积的计算过程,输入数据的三个维度,对应第二个卷积核生成了第二个Feature Map
Feature Map大小计算
如上图所示,输出Feature Map大小计算公式如下:

权值与偏置的初始化方法
caffe源文件filler.hpp中提供了7种权值初始化的方法。在计算机视觉的领域中权重参数的初始化常用xavier,偏置的初始化常用constant,并且初始化为0。
1 |
|
结合 .prototxt 文件中的 FillerParameter来看看怎么用
1 |
|
- 常量初始化(
constant)
1 | optional string type = 1 [default = 'constant']; |
caffe中默认的初始化方式,它就是把权值或着偏置初始化为一个常数,具体是什么常数,自己可以定义。它的值等于上面的.prototxt文件中的 value的值,默认为0。
- 高斯分布初始化(
gaussian)
1 |
positive_unitball初始化
1 |
- 均匀分布初始化(
uniform)
1 |
xavier初始化
1 | // Normalize the filler variance by fan_in, fan_out, or their average. |
xavier是和relu完美配合的初始化。xavier诞生时并没有用relu做例子,但是实际效果中xavier还是和relu很搭配的。
xavier初始化定义为:定义参数所在层的输入维度为n,输出维度为m,那么参数将以均匀分布的方式在$[-\sqrt{\frac{6}{m+n}},\sqrt{\frac{6}{m+n}}]$的范围内进行初始化。具体的原理可以参靠CNN数值——xavier
它的思想就是让一个神经元的输入权重的(当反向传播时,就变为输出了)的方差等于:1 / 输入的个数;这样做的目的就是可以让信息可以在网络中均匀的分布一下。
对于权值的分布:是一个让均值为0,方差为1 / 输入的个数 的均匀分布。
如果我们更注重前向传播的话,我们可以选择 fan_in,即正向传播的输入个数;如果更注重后向传播的话,我们选择 fan_out, 因为,等着反向传播的时候,fan_out就是神经元的输入个数;如果两者都考虑的话,那就选 average = (fan_in + fan_out) /2
msra初始化
1 |
- 双线性初始化(
bilinear)
1 |
