核心:卷积操作
一、内容
卷积神经网络(CNN)是一种特殊结构的神经网络,因含卷积层的卷积操作而得名,具有很强的特征提取能力,这里对卷积神经网络的各层概念及计算过程做一笔记,对于它的深层理解见仁见智吧。
一般CNN各层分别为输入层、卷积层、下采样层、全连接层、输出层。该方法最初针对图像问题提出来的,也最早应用于图像问题,其最显著的一个特性就是对当前特征图局部范围内特征的提取。它的三个特征是局部感受野、权值共享、下采样,其中局部感受野和权值共享体现在卷积层,下采样体现在下采样层(即池化层),每一层的输出称为特征图(fature map).
0.输入层
如果是一张二值图像,则输入就是该图像的像素向量,如果是彩色图像(RGB三通道),则为三通道图像拉成的向量。
1.卷积层
在卷积层定义若干个卷积核(一般为3*3或5*5, 也叫滤波器filter,就是一个矩阵,参数值是学出来的),定义好步长(stride),与上一层的特征图(a*a)做卷积运算,再经激活函数映射,得到新的特征图。每一个卷积核卷积之后都得到一个特征图,大小为a-k+1,所以每一层特征图的数量与卷积核的种类数是一致的。
注:若上一层特征图数量为m,则当前卷积层filter大小为k*k*m,也就是包含了上一层特征图的深度,做卷积的时候是m层一起做,全部内积求和,所以卷积后的特征图数和卷积核数量一致。
2.下采样层(池化)
卷积之后的特征图仍然有很高的维度,池化操作就是将一个局部内的四个相邻值用一个值代替,即用替换四个相邻值,这样特征图大小就变为原来的1/4.其中,如果取w=1/4,b=0,也就是取mean(vi),即平均池化,或者取max(vi),即最大池化,这是两种最常用的操作,可以减少数据量的同时保留有用信息。经过激活函数映射,得到下采样图。
3.全连接层
在经过多个卷积-池化操作后,就得到了提取出的较强的特征图,将其拉成一维向量作为全连接层的输入,后续即为一般的全连接神经网络。
4.输出层
定义好输出类别,得到输出概率。
二、示例分析
其中Input为输入层,C1、C2为卷积层,S1、S2为下采样层,F为全连接层,Output为输出层。
C1层(第一个卷积层):
输入图片大小:32*32
卷积核大小:5*5
卷积核种类:6
输出特征图大小:28*28*6 -------(28 = 32-5+1)
神经元数量:28*28*6,每一次卷积操作即为一个神经元
连接数: 神经元数量*卷积核大小=[(28*28*6)]* (5*5)
参数个数:(5*5+1)*6------------1为bias,每个卷积核在特征图上顺次做卷积操作时权值共享。
S1层(第一个下采样层):
输入图大小:(28*28)*6
池化核大小:2*2
输出下采样图大小:14*14*6
神将元数量:14*14*6
连接数:神经元数量*池化核大小= [(14*14*6)]*(2*2)
参数个数:(1+1)*6---------------每个池化核对应一个weight和一个bias
C2层(第二个卷积层):
输入图大小:(14*14)*6
卷积核大小:5*5(深度为6),种类:16
输出特征图大小:(10*10)*16
神经元数量:(10*10)*16
连接数:神经元数量*卷积核大小= [(10*10)*16]*[(5*5)*6]
参数个数:(5*5*6+1)*16--------5*5*6为每个卷积核的权值数,再加上一个偏置
S2层(第二个下采样层):
输入图大小:(10*10)*16
池化核大小:2*2
输出下采样图大小:(5*5)*16
神经元数量:(5*5)*16
连接数:神经元数量*池化核大小=[(5*5)*16]*(2*2)
参数个数:(1+1)*16-----------------每个池化核对应一个weight和一个bias
F层(全连接层,跟在S4之后):
输入图大小:1*400-------------(5*5)*16拉成一维,可看做(1*1)*400的特征图
神经元数量:84-------------可看着卷积核大小为(1*1),深度为400,种类为84的特殊卷积层
连接数:400*84
参数个数:(400+1)*84
Output层:
输入图大小:1*84
输出神经元数量:10-------------如手写数字识别
参考: