本文章,对研究过程中应用caffe平台构建卷积神经网络和残差神经网络过程中,用到的layer进行简单记录和讲解。
大致包含以下图层:"HDF5Data"(读取hdf5文件) 、"Convolution"(卷积层)、"ReLU"(激励层)、"Slice"(切片)、"Crop"(裁剪)、"Eltwise"(运算)、"Concat"(连接)
(1) "HDF5Data"(读取hdf5文件)
a.参数简单介绍:
name:层的名称
type:层的类型
top:层输出数据
bottom:输入层的数据(读取数据时没有)
b.示例
(2)"Convolution"(卷积层)(仅解释研究中用到的参数)
a.参数设置
num_putput:卷积核的个数。(输出图层的个数)
kernel_size:卷积核的大小。(长宽不等可用kernel_h和kernel_w设定)
stride:卷积核的步长,默认为1。(横纵不等可用stride_h和stride_w设定)
pad:扩充边缘的长度,默认为0,即不扩充。扩充的时候上下左右对称,如卷积核大小为3*3,pad为0时,卷积运算后特征图长宽减少1。pad为1时,则卷积运算后特征图与原图大小相等。
weight_filler:weight的初始化,默认为“constant”,值为0。(也可用“xavier”或“gaussian”)
bias_filler:bias的初始化,一般设置为“constant”,即为0。
b.示例
(3)"ReLU"(激励层)
激励层有很多种,本次实验仅用到ReLU,即max(0,x)。作用为让神经网络过程转变成非线性。
(4)"Slice"(切片)
将bottom输入数据,经过需要,分割成多个top输出数据。
a.参数设置
axis:需要进行分割的维度(blobs数据有4维,分别用0,1,2,3表示)
slice_point:分割位置
b.示例
数据“data”的维度为 1*9*33*33,则如下代码含义为:
将“data”数据分为1*8*33*33 (“mul_data”) 和 1*1*33*33 (“pan_data”)
(5)"Crop"(裁剪)
取原来数据中的一部分
a.参数设置
bottom即输入两组数据,例如A,B。A为要裁剪的数据,B为裁剪后数据的参考格式。
axis:从哪一维度开始裁剪。(blobs数据有4维,分别用0,1,2,3表示)
offset:每个维度对应的开始裁剪的位置。
b.示例
数据“data”的维度为1*9*33*33,数据“conv3”的维度为1*8*31*31。需裁剪得到“data”数据后8层,并裁剪掉上下左右各一行数据。代码如下:
(6)"Eltwise"(运算)
仅以加法为例子(data1数据为conv3和redata1数据之和,conv3和redata1需数据格式大小一致)
(7)"Concat" (连接)
axis:以哪个维度为依据进行连接(例子与切片的例子4正好相反)
该文章将博主此次研究中所用到的caffe层类型进行简单记录。一便于博主自己查询代码;二希望可以帮助到其他学习caffe之人。如有错误之处或者其他意见还望各位指出。