Learning Caffe(11)---层参数详解

输入层

 

input_param详细解释:

  • dim:1  ——表示对待识别样本进行数据增广的数量,该值的大小可自行定义。但一般会进行5次crop(剪裁),将整幅图像分为多个flip。该值为10则表示会将待识别的样本分为10部分输入到网络进行识别。如果相对整幅图像进行识别而不进行图像数据增广,则可将该值设置为1.
  • dim: ——该值表示处理的图像的通道数,若图像为RGB图像则通道数为3,设置该值为3;若图像为灰度图,通道数为1则设置该值为1.
  • dim:28 ——图像的长度,可以通过网络配置文件(*_train_test.prototxt)中的数据输入层中的crop_size来获取。
  • dim:28——图像的宽度,可以通过网络配置文件(*_train_test.prototxt)中的数据输入层中的crop_size来获取。

注:测试的图像的宽度和高度设置一定要和训练时(原图or截图)的图像的高度和宽度设置为一致。若网络配置文件中没有设置crop_size,则说明训练时使用的是原图。

数据层

Batch_size:批尺寸,该参数决定一次训练的样本数目,影响到模型的优化程度和速度。

图像数据层

当训练的数据直接为图片时,使用图像数据层。

卷积层

  • lr_mult:学习率系数,最终的学习率等于该学习率系数乘以超参数中的base_lr,第一个lr_mult表示权值的学习率系数,第二个表示偏置的学习率系数。
  • num_output:卷积核的个数,n个卷积核输出n个feature map,代表n个特征。
  • kernel_size: 卷积核的大小。如果卷积核的长和宽不等,需要用kernel_h和kernel_w分别设定。
  • stride: 卷积核移动的步长,默认为1。也可以用stride_h和stride_w来设置。
  • pad:扩充的时候是左右、上下对称的,比如卷积核的大小为5*5,那么pad设置为2,则四个边缘都扩充2个像素,即宽度和高度都扩充了4个像素,这样卷积运算之后的特征图就不会变小。 也可以通过pad_h和pad_w来分别设定。

得出:

output_dimention:

例如:

width  = (image_width - kernel_width )/stride  + 1

(28 - 5) +1 = 24

输入是28 * 28 * 1的图像,卷积核大小为5,移动的步长为1,可以得出每个卷积核产生的feature map的大小为24 * 24 ;     

卷积核的个数为20,所以输出的维度为24 * 24 * 20。

num_parameters:

由于CNN通过感受野进行了权值共享,所以同一个feature Map中神经元权值共享,所以参数个数与神经元个数无关,与卷积核大小和FeatureMap个数相关。

每个卷积核5 * 5个参数,和20个偏置参数。

num_parameters = 5 * 5 * 1 * 20 + 20 = 520(单通道图像 * 1)

倘若卷积层的输入为3维矩阵。

假设为输入11 * 11 * 20,卷积核参数为kernel_size = 5, stride = 1, num_out_put = 50

输出为 7 * 7 * 50

总参数为:5 * 5 * 20 * 50 + 50 = 2550(相当于20通道的图像作为输入)

 

池化层

用于减少训练参数规模。

  • Pool池化层类型。
  • Kernel_size:过滤器大小。
  • Stride:过滤器移动步长,一般这个参数是大于的,不然起不到减少训练参数规模的效果。

得出:

output_dimention:

输入为上一层的输出,为24 * 24 * 20

(24 -  2)/2 +1 = 11

所以该层的输出矩阵为11 * 11 * 20

池化层没有参数需要训练

 

全连接层

 

  • lr_mult:学习率系数,最终的学习率等于该学习率系数乘以超参数中的base_lr,第一个lr_mult表示权值的学习率系数,第二个表示偏置的学习率系数。
  • num_output:卷积核的个数,n个卷积核输出n个feature map,代表n个特征。

全连接层卷积核大小等于输入大小,卷积核不会移动,所以也不存在移动步长参数。

得出

output_dimention:

1 * 1 * 500 = 500 是一个长度为500的一维向量。

num_parameters:

n * n * 500 + 500其中n为该层的输入维度。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章