基于python手写深度学习网络系列(8)
卷积神经网络的实现(结构、卷积层、池化层)
CNN,很重要,主要用于图像识别、语音识别等场合。
7.1 整体结构
也是通过层的组装结合来搭建,但是相比之前的神经网络多了卷积层(convolution层)和池化层(Pooling层)
之前的神经网络,相邻层的神经元之间都会有连接,也就是全连接(fully-connected)
基于全连接层
基于CNN网络
7.2 卷积层
全连接层有一个问题就是输出的形状被忽视了,三维数据一般都被拉成了一维的数据
但实际上,三维的数据,相邻的像素值比较接近,RGB各个通道之间有密切的关联性,较远的像素之间就没有关联了。
卷积层保持形状不变,有可能正确理解图像等具有形状的数据。CNN中有时将卷积层的输入输出数据称为特征图
卷积运算:相当于图像处理中的“滤波器运算”
(4,4)(3,3),最后输出大小(2,2)
对于输入数据,卷积运算以一定间隔滑动滤波器的窗口并应用。这里所说的窗口是指图7-4中灰色的3×3的部分。如图7-4所示,将各个位置上滤 波器的元素和输入的对应元素相乘,然后再求和(有时将这个计算称为乘积累加运算)。然后,将这个结果保存到输出的对应位置。将这个过程在所有位置都进行一遍,就可以得到卷积运算的输出。
CNN中,滤波器的参数就对应之前全连接层网络的权重。并且,CNN中也存在偏置。
在进行卷积的处理前,有时需要对周围填入固定的数据,这叫做填充。(padding)
这个例子中将填充设成了1,不过填充的值也可以设置成2、3等任意的整数。在图7-5 的例子中,如果将填充设为2,则输入数据的大小变为(8,8);如果将填充设为3,则大小变为(10, 10)。
只要填充1就可以保证图像的大小不发生变化
应用滤波器的位置间隔称