欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定!
对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴趣的同学加微信:tsaiedu,并注明消息来源,邀请你进入数据爱好者交流群,数据爱好者们都在这儿。
作者简介:
鲁伟:一个数据科学践行者的学习日记。数据挖掘与机器学习,R与Python,理论与实践并行。
个人公众号:数据科学家养成记 (微信ID:louwill12)
配套学习视频教程: 手把手教你用Python 实践深度学习
在上一讲中,我们对卷积神经网络中的卷积操作进行了详细的解读,但仅仅是对二维图像,即通道数为 1 的图像(灰度图)进行了卷积,对于三维或者更高维的图像卷积显然并没有这么简单。
如果图像大小为6*6*3,那么这里的 3 指的是三个颜色通道,你可以将其理解为 3 个6*6的图像的堆叠,如果要对此图像进行卷积的话,我们的滤波器也需要变成三维的,假设采用一个3*3*3的滤波器对其进行卷积(这里需要注意的是,滤波器的通道数一定要等于输入图像的通道数),根据((n+2p-f)/s)+1的计算公式我们可以知道输出图像的大小为4*4*1,由一个滤波器进行卷积之后输出图像的通道不是 3 而是 1 了。
那么究竟如何理解三通道的卷积过程?单通道的卷积操作我们已经知道,就是直接对感受野与滤波器进行元素相乘求和,那三通道呢?我们可以将3*3*3的滤波器想象为一个三维的立方体,为了计算立方体滤波器在输入图像上的卷积操作,我们首先将这个三维的滤波器放到左上角,让三维滤波器的 27 个数依次乘以红绿蓝三个通道中的像素数据,即滤波器的前 9 个数乘以红色通道中的数据,中间 9 个数乘以绿色通道中的数据,最后 9 个数乘以蓝色通道中的数据。将这些数据加总起来,就得到输出像素的第一个元素值。如下图所示:
这样做可能还不够。在实际图像处理中,仅靠单滤波器很难将复杂的图像特征进行充分提取。所以,通常而言,我们用来进行卷积的滤波器远不止一个。下面我们用两个滤波器对上述图像进行卷积操作。
我们用第一个滤波器进行卷积得到一个4*4的输出,然后用第二个滤波器进行卷积又得到一个4*4的输出,将这个输出放到第一个输出后面,形成了一个4*4*2的输出,这里的 2 的就是滤波器的个数。
关于多通道卷积的另一种理解类似于 DNN 中的标准神经网络中的Z=Wx+b的线性计算,其中x为输入的原始图像,W为滤波器,b偏差项,卷积过程就类似与标准神经网络的线性计算,完了之后利用激活函数进行激活。还有一个关键问题就是卷积层有多少参数,卷积层的参数通常在于滤波器W,根据滤波器的大小,我们可以计算一个滤波器的参数数量为f*f*nc,其中nc为通道熟量,那 k 个滤波器所含的参数数量则为f*f*nc*k。
卷积过程到此就差不多解释完了。我们再看 CNN 的另一个重要操作——池化(pooling)。简单来说,池化层是用来缩减模型大小,提高模型计算速度以及提高所提取特征的鲁棒性。池化操作通常有两种,一种是常用的最大池化(max pooling),另一种是不常用的平均池化(average pooling)。池化操作过程也非常简单,假设池化层的输入为一个4*4的图像,我们用最大池化对其进行池化,执行最大池化的树池是一个2*2的矩阵,执行过程就是将输入矩阵拆分为不同区域,对于2*2的输出而言,输出的每个元素都是其对应区域的最大元素值。
最大池化过程就像是应用了一个2*2的滤波器以步幅 2 进行区域最大化输出操作。所以简单而言,池化的参数就是滤波器的大小f和步幅s,池化的效果就相当于对输入图像的高度和宽度进行缩小。值得注意的是,最大池化只是计算神经网络某一层的静态属性,中间并没有什么学习过程。
池化完成之后就是标准神经网络中的全连接层了。全连接层我们在 DNN 中有详细介绍,这里就不再赘述。总之,一个典型的卷积层通常包括卷积层-池化层和全连接层。
下一讲中,我们将一起尝试如何利用numpy实现一个简单的典型的卷积神经网络。
参考资料:
https://www.coursera.org/learn/machine-learning
7月26日
免费!
免费!
免费!
深度学习从哪开始学?从数据分析师到机器学习(深度学习)工程师的进阶之路
内容:1、机器学习/深度学习的学习方法 2、数据职业生涯规划与自我转型路线 3、手把手教你搭建一个深度神经网络(DNN)
扫描下图二维码即可参与学习
从数据分析师到机器学习(深度学习)工程师的进阶之路
网友评论