caffe学习笔记2--卷积层和池化层、激活函数、全连接层的编写

layer{
name:“conv1”
type:“Convolution”
top:“conv1”
bottom:“data”#跟数据层的输出相对应,表示输入的数值的属性,因为在数据层中输出的是data属性,卷积层连接的是数据层,故是data
param{
lr_mult:1#对权重参数的定义,W,最终的学习率是solver.prototxt中的base_lr乘以W
}
param{
lr_mult:2#对偏置参数的定义,bias,一般偏置是权重的两倍
}
convolusion_param{
num_output:20#选择多少个卷积核来获得特征图,选择二十个卷积核可以获得20个特征图
kernel_size:5#表明这个卷积核的大小是5x5的卷积,卷积核的大小应该是5x5xd,d根据上一层的卷积核或者前面的通道数来得到,可以推出来,可以不表达
stride:1#步长设置,比如说一张图片是10x10大的,卷积核是5x5大小的,那么这个步长表示说我每次卷积核移动的位置是多少
pad:0#对图像进行扩充,默认不填充,填充一圈,pad=1,两圈为2,填充的数值是0
weight_filter{
type:“xavier”#对权值的初始化,默认选项为constant=0,也可以用"gaussian"高斯初始化
}
bias_filter{
type:“constant”#初始化为0
}
}
}

池化层
layer{
name:“pool1”
type:“Pooling”
bottom:“conv1”
top:“pool1”
pooling_param{
pool:MAX#池化方法,目前可以使用的方法为max,ave
kernel_size:3#池化的核大小
stride:2#步长为2,保证了池化过程中不重复
}
}

激活函数
采用relu激活函数激活,一般采用relu,极少情况下也会使用Sigmoid函数来进行激活
layer{
name:“relu1”
type:“ReLU”
bottom:“pool1”
top:“pool1”
}
全连接层
负责将上一层输出的东西转换成为一个向量输出
layer{
name:“ip1”
type:“InnerProduct”
bottom:“pool2”
top:“ip1”
param{
lr_mult:1#定义权重,全连接层相当于对特征进行第二次提取
}
param{
lr_mult:2#定义偏置
}
Inner_product_param{
num_output:500
weight_filter{
type:“xavier”
}
bias_filter{
type:“constant”
}
}
}

#测试准确率时需要用到的层
layer{
name:“accuracy”
type:“Accuracy”
bottom:“ip2”#最终的全连接层的输出值
bottom:“label”
top:“accuracy”
include{
phase:“TEST”
}
}

你可能感兴趣的:(caffe学习笔记)