cs231_n5.2卷积神经网络

CNN通常由卷积层,池化层和全连接层堆叠而成,卷积层之后常使用激活函数(例如Relu)对其输出进行处理。CNN能够保留输入的空间结构。

注意:如果没有激活函数的话,多层网络叠加在一起,相当于一个等价的线性方程,无法解决线性不可分的问题(非线性激活增加了网络的表达能力)。

卷积操作:将filter在x上进行滑动,计算出每一个空间定位时的点积结果。也就是将filter的每个位置元素和与之对应图像区域region的像素值相乘,即W^{T}x+b,b为偏置。(W是和x同样大小的图像块,滑动filter可以获得整个feature map。)

填充:使得输出和输入的大小相同,避免信息丢失(尤其是边角的信息)。可以使用0填充或者边缘的像素进行填充。

当输入数据x(32,32,3),filter(5,5,3),无填充,stride为1时,输出y的shape为(28,28,1),如下图所示。

 

activation map大小:(H-F+2P)/S + 1   H是输入, F卷积核大小, P是padding   ( 32-5+0)/1+1=28, 卷积核为1,所以输出28x28x1

卷积核深度与输入深度相同,卷积层不关注所输入图片的全部,而是关注图像空间的一个局部区域,能够保存输入数据的空间结构。每个卷积核在输入数据上进行卷积操作,形成一张激活映射图。Num个卷积核会形成Num张激活映射图。

该层的可训练参数个数:每个卷积核有(Hf*Wf*D+1)个参数,其中1为偏置。有Num个卷积核,因此该层有(Hf*Wf*D+1)*Num个参数。

 

池化:先对输入数据进行分区,然后取最大或平均,得到一个值代替该区域。(不改变深度,相当于水平面的降采样),输出大小:(H-F)/S + 1, 可训练参数个数:0

 

全连接层

输入X,其形状为(N,L),N为样本个数,L为样本维数,C是类别数,则该层权重W的形状为(C,L)。

该层的操作:在该层使用f=Wx函数,则该层的输出/激活值为一个(N,C)的张量, N为样本个数,C是类别数。

全连接层的例子:如下图所示。样本个数1,样本维数3072,类别个数10(10行权重,即10个分类模板)。

 

卷积层越往后,越能表达高级语义特征。训练卷积网络的演示程序:https://cs.stanford.edu/people/karpathy/convnetjs/demo/cifar10.html。该程序可视化了卷积核和激活映射。

参考:https://blog.csdn.net/KKALL1314/article/details/104126621

猜你喜欢

转载自blog.csdn.net/jialibang/article/details/109054699
今日推荐