关于卷积神经网络笔记,并非拖延症犯了,一方面是出差几天把学习规律打乱了,一方面是知识到了一定程度需要总结,哪怕是书本上的也要确保理解,同时也翻阅了另一本深度学习入门的书籍进行印证。
笔记十的案例,仅仅添加了两层卷积层就比纯全连接层的识别率提升了1.5%,从而达到了99.3%的识别率,为什么呢?
密集连接层和卷积层的根本区别在于,Dense 层从输入特征空间中学到的是全局模式(比如对于MNIST 数字,全局模式就是涉及所有像素的模式);而卷积层学到的是局部模式,对于图像来说,学到的就是在输入图像的二维小窗口中发现的模式。
全连接层存在什么问题呢?那就是数据的形状被“忽视”了。比如,输入数据是图像时,图像通常是高、长、通道方向上的3 维形状。但是,向全连接层输入时,需要将3 维数据拉平为1 维数据。实际上,前面提到的使用了MNIST数据集的例子中,输入图像就是1 通道、高28 像素、长28 像素的(1, 28, 28)形状,但却被排成1 列,以784 个数据的形式输入到最开始的层。
图像是3 维形状,这个形状中应该含有重要的空间信息。比如,空间上邻近的像素为相似的值、RBG的各个通道之间分别有密切的关联性、相距较远的像素之间没有什么关联等,3 维形状中可能隐藏有值得提取的本质模式。但是,因为全连接层会忽视形状,将全部的输入数据作为相同的神经元(同一维度的神经元)处理,所以无法利用与形状相关的信息。
而卷积层可以保持形状不变。当输入数据是图像时,卷积层会以3 维数据的形式接收输入数据,并同样以3 维数据的形式输出至下一层。因此,在CNN中,可以(有可能)正确理解图像等具有形状的数据。
卷积神经网络学到的模式具有平移不变性(translation invariant)。卷积神经网络在图像右下角学到某个模式之后,它可以在任何地方识别这个模式,比如左上角。对于密集连接网络来说,如果模式出现在新的位置,它只能重新学习这个模式。这使得卷积神经网络在处理图像时可以高效利用数据(因为视觉世界从根本上具有平移不变性),它只需要更少的训练样本就可以学到具有泛化能力的数据表示。
卷积神经网络可以学到模式的空间层次结构(spatial hierarchies of patterns),第一个卷积层将学习较小的局部模式(比如边缘),第二个卷积层将学习由第一层特征组成的更大的模式,以此类推。这使得卷积神经网络可以有效地学习越来越复杂、越来越抽象的视觉概念.
关于全连接层的代码、summary输出、模型可视化输出,以及关于神经元权重个数的算法。
关于卷积层和全连接层的代码、summary输出、模型可视化输出,以及关于神经元权重个数的算法。
关于卷积的工作原理:
在3D 输入特征图上滑动(slide)这些3×3 的窗口,在每个可能的位置停止并提取周围特征的3D 图块[形状为(window_height, window_width, input_depth)]。然后每个3D 图块与学到的同一个权重矩阵[叫作卷积核(convolution kernel)]做张量积,转换成形状为(output_depth,) 的1D 向量。然后对所有这些向量进行空间重组,使其转换为形状为(height, width, output_depth) 的3D 输出特征图。输出特征图中的每个空间位置都对应于输入特征图中的相同位置(比如输出的右下角包含了输入右下角的信息)。举个例子,利用3×3 的窗口,向量output[i, j, :] 来自3D 图块input[i-1:i+1,j-1:j+1, :]
关于mnist手写识别卷积和池化的步骤解析,此处未考虑通道数,加通道数就是多维的了,也未考虑填充和步幅,只是简单描述了一下卷积和池化过程。
本文分享自 python与大数据分析 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!