caffe总结(三)caffe layers层参数含义解释


上文总结了基于caffe的网络模型要素及构成、数据库类型等,本文将承接上文对caffe的主要层的功能及参数进行解释说明。

  • Layer 是caffe模型的本质内容和执行计算的基本单元,可进行多种运算,如convolve、pool、innerproduct、rectified-linear和sigmoid等非线性运算,还有元素及的数据变换、normalize、load data、softmax和hinge等losses计算。
  • Layer 承担了网络的两个核心操作:forward pass(前向传播) 接收输入并计算输出和 backward pass(反向传播) 接收输出梯度,计算相对于参数和输入梯度并反向传播给前面的层。

1、data layers

caffe的数据层data layers处在最底层,数据可以从高效的数据库中读取,也可以直接从内存中读取,或者直接从硬盘存储的文件中读取。

  • 数据预处理层,常见操作有 减均值、尺度变换、随机裁剪或者镜像 等。

(1)数据库

  • 层类型:data
  • 参数:
source数据库文件路径必填
batch_size网络单次数据数据量必填
rank_skip异步随机梯度下降中使用可选
backend选择是LMDB还是LevelDB可选

(2)内存数据

  • 层类型:MemoryData
  • 参数:
batch_size网络单次数据数据量必填
channels通道数必填
height图像高度必填
weight图像宽度必填

(3)HDF5数据

  • 层类型:HDF5Data
  • 参数:
source数据库文件路径及文件名必填
batch_size网络单次数据数据量必填

(4)图像数据Images

  • 层类型:ImagesData
  • 参数:
sourcetxt文件的路径名,文件中每行存储一张图片的路径及对应的标签必填
batch_size网络单次数据数据量,即图片数必填
rank_skip异步随机梯度下降中使用可选
shuffle是否随机打乱图片顺序,默认为false可选
new_height根据设置的值将图像调整成给定的高度可选
new_weight根据设置的值将图像调整成给定的宽度可选

(5)窗口Windows

  • 层类型:WindowsData
  • 参数:
source数据库文件路径及文件名必填
batch_size网络单次数据数据量,即图片数必填

2、convolution layers

  • 层类型:Convolution
  • CPU实现代码: .\src\caffe\layers\conv_layer.cpp
  • CUDA GPU实现代码: .\src\caffe\layers\conv_layer.cu
  • 参数:
num_output指定卷积核的数量必填
kernel_size指定卷积核的高度和宽度必填
weight_filler指定参数的初始化方案可选
bias_term指定是否给卷积输出添加偏置项,默认true可选
pad指定在输入图像周围补0的像素个数,默认为0可选
stride指定卷积核在输入图像上滑动的布长,默认为1可选
group指定分组卷积操作的组数可选

3、pooling layers

  • 层类型:Pooling
  • CPU实现代码: .\src\caffe\layers\pooling_layer.cpp
  • CUDA GPU实现代码: .\src\caffe\layers\pooling_layer.cu
  • 参数:
kernel_size指定池化窗口的高度和宽度必填
pool指定池化方法,有三种:最大值、均值、随机可选
pad指定在输入图像周围补0的像素个数,默认为0可选
stride指定池化窗口在输入图像上滑动的布长,默认为1可选

4、InnerProduct Layers

  • 层类型:InnerProduct(全连接层或者內积层)
  • CPU实现代码: .\src\caffe\layers\inner_product_layer.cpp
  • CUDA GPU实现代码: .\src\caffe\layers\inner_product_layer.cu
  • 参数:
num_output全连接层的输出节点或者滤波器个数必填
weight_filler指定参数的初始化方案,默认类型为constant,值为0必填
bias_filler指定滤波器的偏置类型,默认类型为constant,值为0可选
bias_term指定是否给滤波器输出添加并训练偏置项,默认true可选

5、ReLU Layers

  • 层类型:ReLU
  • CPU实现代码: .\src\caffe\layers\relu_layer.cpp
  • CUDA GPU实现代码: .\src\caffe\layers\relu_layer.cu
  • 参数:
negative_slope设置激活函数在负数部分的斜率。输入数据小于零的部分乘以这个因子,斜率为0时,小于零的部分完全滤掉,默认为0可选

给定一个输入数据,当x>0时,relu输出为x,当x≤0时,relu输出为x*negative_slope,当negative_slope未指定时,等同于标准ReLU函数max(x,0)。

6、Sigmoid Layers

  • 层类型:Sigmoid
  • CPU实现代码: .\src\caffe\layers\sigmoid_layer.cpp
  • CUDA GPU实现代码: .\src\caffe\layers\sigmoid_layer.cu
  • 参数:无
    Sigmoid层使用sigmoid(x)函数计算每个输入数据的输出。

7、LRN Layers

  • 层类型:LRN(local response normalization,局部响应值归一化)
  • CPU实现代码: .\src\caffe\layers\lrn_layer.cpp
  • CUDA GPU实现代码: .\src\caffe\layers\lrn_layer.cu
  • 参数:
local_size跨通道时的归一化,指名参与求和的通道数;通道内的规范化,指名参与求和的方形区域的边长。默认为5可选
alpha尺度参数,默认值为1可选
beta指数参数,默认值为1可选
norm_region指定在通道之间规范化还是通道内规范化,默认通道间可选

8、Dropout Layers

  • 层类型:Dropout
  • CPU实现代码: .\src\caffe\layers\dropout_layer.cpp
  • CUDA GPU实现代码: .\src\caffe\layers\dropout_layer.cu
  • 参数:
dropout_ratio过拟合丢弃数据的概率,默认为0.5可选

9、SoftmaxWithLoss Layers

  • 层类型:SoftmaxWithLoss
  • CPU实现代码: .\src\caffe\layers\softmax_loss_layer.cpp
  • CUDA GPU实现代码: .\src\caffe\layers\softmax_loss_layer.cu
  • 参数:无
    softmax_loss层没有参数项,它封装了一个softmax层即softmax_loss=softmax+loss regression,该层输出的是loss值。

10、Softmax Layers

  • 层类型:Softmax
  • CPU实现代码: .\src\caffe\layers\softmax_layer.cpp
  • CUDA GPU实现代码: .\src\caffe\layers\softmax_layer.cu
  • 参数:无
    softmax_loss层没有参数项,该层输出的是似然值。

11、Accuracy Layers

  • 层类型:Accuracy
  • CPU实现代码: .\src\caffe\layers\accuracy_layer.cpp
  • 参数:
phase:include默认test阶段输出分类精确度必填

12、caffe solver

caffe模型的学习分为两个部分:solver优化、更新参数以及Net计算loss和gradient。
solver方法是计算最小化损失loss值,采用方法有:

  • SGD(随机梯度下降)
  • AdaDelta(鲁棒的学习率方法)
  • AdaGrad(自适应性梯度下降方法)
  • Adam(基于梯度的优化方法)
  • NAG(加速度下降)
  • RMSprop(基于梯度)

每一次迭代完成了一下功能:

  • 调用Net的前向过程计算输出和loss
  • 调用Net的后向过程计算梯度
  • 根据solver方法,利用梯度更新参数
  • 根据学习率,历史数据和求解方法更新solver状态,使权重逐步更新到最终的学习状态。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值