深度学习002:深度学习计算原理介绍

1 卷积层计算原理

1.1 深度为1的卷积(黑白图像)

假设有一个5*5的图像,使用一个3*3的filter进行卷积,想得到一个3*3的Feature Map,如下所示:

为了清楚的描述卷积计算过程,我们首先对图像的每个像素进行编号,用Xi,j表示图像的第行第列元素;对filter的每个权重进行编号,用Wm,n表示第m行第n列权重,用Wb表示filter的偏置项;对Feature Map的每个元素进行编号,用ai,j表示Feature Map的第i行第j列元素;用f表示激活函数(这个例子选择relu函数作为激活函数)。然后,使用下列公式计算卷积:

其中激活函数relu的定义和图像如下:

例如,对于Feature Map左上角元素来说,其卷积计算方法为:

计算结果如下图所示:

可以依次计算出Feature Map中所有元素的值。下面的动画显示了整个Feature Map的计算过程:

 

1.2 深度为3的卷积(彩色图像)

以上是深度为1的卷积层的计算方法,如果深度大于1怎么计算呢?其实也是类似的。如果卷积前的图像深度为D,那么相应的filter的深度也必须为D。我们扩展一下式1,得到了深度大于1的卷积计算公式:

在式4中,D是深度;F是filter的大小(宽度或高度,两者相同);Wd,m,n表示filter的第层第m行第n列权重;ad,I,j表示图像的第d层第i行第j列像素;其它的符号含义和式1是相同的。

下面的动画显示了包含两个filter的卷积层的计算。我们可以看到7*7*3输入,经过两个3*3*3filter的卷积(步幅为2),得到了3*3*2的输出。另外我们也会看到下图的Zero padding是1,也就是在输入元素的周围补了一圈0。Zero padding对于图像边缘部分的特征提取是很有帮助的。

以上就是卷积层的计算方法。这里面体现了局部连接和权值共享:每层神经元只和上一层部分神经元相连(卷积计算规则),且filter的权值对于上一层所有神经元都是一样的。对于包含两个3*3*3的fitler的卷积层来说,其参数数量仅有(3*3*3+1)*2=56个,且参数数量与上一层神经元个数无关。与全连接神经网络相比,其参数数量大大减少了。

1.3 卷积计算的物理意义

卷积的物理意义可以参考如下图:

2 池化层计算原理

Pooling层主要的作用是下采样,通过去掉Feature Map中不重要的样本,进一步减少参数数量。Pooling的方法很多,最常用的是Max Pooling(取最大值)、Mean Pooling(取平均值)。Max Pooling实际上就是在n*n的样本中取最大值,作为采样后的样本值。下图是2*2 max pooling:

猜你喜欢

转载自www.cnblogs.com/Edison25/p/11040481.html
今日推荐