和之前的网络(多层感知机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函数 一定将特征图展开成矩阵
卷积层
池化层的实现
|