本文主要是介绍Chapter7 卷积神经网络CNN,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
和之前的网络(多层感知机mlp)比较
之前介绍的网络相邻层之间所有神经元都有连接,这叫全连接(fully-cnonected)
CNN相比之前网络多了卷积层(Convolution层)和池化层(pooling层)
全连接层(Affine层)存在的问题:数据形状被忽视
Affine层读入的数据应是一维的。
例如:图像通常是高、长、通道 的 三维数据,而之前MNIST的(1,1,28)被拉成了一维784输入到最开始的Affine层。
图像是三维形状,“形状”含有重要的空间信息,
比如 空间上邻近的像素为相似值、RGB的各个通道间有关联、相距较远的像素间没什么关联等。
而卷积层可以保持形状不变,输入三维数据,输出三维数据,可以正确理解图像等具有形状的数据。
卷积层的输入输出数据称为 特征图(feature map) 有输入特征图(input feature map) 和输出特征图(output feature map)。
卷积层
卷积运算——卷积层的操作
填充(paddling):主要是为了调整输出的大小
填充内容为0
如下图 填充值为2,则输入数据的大小为(8,8) ; 填充值为3,则输入数据的大小为(10,10)
步幅(stride)
三维的情形
输入数据的通道数=滤波器的通道数
每个通道的滤波器大小相同
一般的:卷积运算的处理流(批处理)
(N,C,H,W)
(N,FN,OH,OW)
池化层
池化是缩小高、长方向上的空间的运算。有Max池化 Average池化等
池化窗口大小=步幅大小
特征:
没有要学习的参数 每个通道独立进行 对数据的微小偏差具有鲁棒性
卷积层和池化层的实现
im2col函数:将输入数据和滤波器展开为二维矩阵
输入数据按【滤波器应用区域】展开成一行一行(三维变一维)
ps:如果应用区域有重叠 重叠部分就重复展开了 所以im2col有消耗更多内存的缺点。
卷积层的实现
im2col函数 一定将特征图展开成矩阵
卷积层
池化层的实现
这篇关于Chapter7 卷积神经网络CNN的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!