CNN卷积各层的参数和链接个数的计算
CNN卷积神经网络相比于神经网络而言,以其对图像处理的专业性和简便性而出名。相比于其他的神经网络,CNN网络的输入是图像的一小块。而不是整个图像的像素。卷积层每次获取图像的一小块,然后进行卷积。经过多次处理后,图像的初步特征就会被提取出来,然后通过池化层,进行采样降维。使得特征图(fetrue map)的维度降低。然后经过非线性化,(为什么要经过非线性化?因为没有激励函数的神经网络只能逼近线性的函数而不能逼近任意函数,神经网络的本质其实是一个参数待定的函数)多次处理后能够得到整个图像人眼里观察不到的特征。然后经过全连接层之后进行分类或者回归。以上是cnn的大略流程。
搭建CNN的关键在于如何设计CNN网络。这其中每层的参数设计是关键:
假设输入为:H1*W1*D1,
卷积层:
滤波器的尺寸:(这个是设计的,但通常是经验值:F*F*d),步长:stride=S,是否补零:p=(0,1),滤波器个数:K
1,如何计算feature map(特征图,输出数据体)的神经元个数H2*W2*D2:
原则:featur map的神经元个数是由滤波器尺寸F,个数K,步长S,是否补零决定的P!
H2=(H1-F+2P)/S +1
W2=(W1-F+2P)/S + 1
D2=K
2,参数个数:需要被训练的参数:也就是滤波器的参数:F*F*d*K+K
3,连接的个数:(F*F+1)*K*( H2*W2)
总结:1,当输入给定以后,滤波器设计是卷积层设计的核心,之后输出的数据就给定
了
2,滤波器的深度不用设计,与图像的通道数相同,也就是说需要知道滤波器的长宽和个数,是否补零,步长是多少?四个参数
Relu层:本层不需要设计参数,也不需要更新
池化层:也称下采样层,仅仅改变输入的维度