计算机系统应用教程网站

网站首页 > 技术文章 正文

彻底了解卷积神经网络CNN(二)(卷积神经网络batch normalization)

btikc 2025-01-29 14:32:08 技术文章 18 ℃ 0 评论

在卷积神经网络中,有一个非常重要的特性:权值共享。

所谓的权值共享就是说,给一张输入图片,用一个filter去扫这张图,filter里面的数就叫权重,这张图每个位置是被同样的filter扫的,所以权重是一样的,也就是共享。

池化层

上图显示,池化就是对特征图进行特征压缩,池化也叫做下采样。选择原来某个区域的max或mean代替那个区域,整体就浓缩了。下面演示一下pooling操作,需要制定一个filter的尺寸、stride、pooling方式(max或mean):

卷积神经网络的组成

卷积——激活——卷积——激活——池化——......——池化——全连接——分类或回归

前向传播与反向传播

之前已经讲解了卷积层前向传播过程,这里通过一张图再回顾一下:

下面讲解卷积层的反向传播过程:

反向传播的目的:更新参数w。因此要先算出dJ/dw。假设上一层会传过来一个梯度dJ/dout,根据链式求导法则,因此dJ/dw = dJ/dout * dout/dw =dJ/dout * x 。在计算机中方便为变量命名的缘故,将dJ/dout记为dout,dJ/dw记为dw,即图中的情况。后面也用这个记号来讲。

首先要清楚:dw 和 w 的尺寸是一样的。一个点乘以一个区域还能得到一个区域。那么反向传播过程就相当于:用dout中的一个元素乘以输入层划窗里的矩阵便得到一个dw矩阵;然后滑动滑窗,继续求下一个dw,依次下去,最后将得到的多个dw相加,执行 w = w - dw 就完成了反向传播的计算。

上面的反向传播可以更新一个filter中的参数,还要求其他的filter。

下面用图示来看一下2种不同的pooling过程——池化层的前向传播:

在池化层进行反向传播时,max-pooling和mean-pooling的方式也采用不同的方式。

对于max-pooling,在前向计算时,是选取的每个2*2区域中的最大值,这里需要记录下最大值在每个小区域中的位置。在反向传播时,只有那个最大值对下一层有贡献,所以将残差传递到该最大值的位置,区域内其他2*2-1=3个位置置零。具体过程如下图,其中4*4矩阵中非零的位置即为前边计算出来的每个小区域的最大值的位置

对于mean-pooling,我们需要把残差平均分成2*2=4份,传递到前边小区域的4个单元即可。具体过程如图:

卷积网络架构实例

VGGNet深度更多,有很多卷积层和池化层。一个版本有16层,另一个版本有19层(较常用)。

VGGNet的特点:

filter只有3*3的,意味着计算的特征较多,粒度更细。同时pooling的参数也有固定。

注意:传统的卷积神经网络层数越多并以意味着效果更好。而在2016年推出了深度残差网络达到了152层。后续讲介绍。

那么训练一个VGGNet有多少内存开销呢?

从图可得知,训练过程中一张224*224*3的图像会有138M个参数会占93MB的内存。因此每个batch中图像的数目应该受内存的约束,即 93*图像数目<内存总容量。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表