第七章 卷积神经网络(CNN)
整体结构
卷积层
因为全连接层会忽视形状,将全部的输入数据作为相同的神经元(同一维度的神经元)处理,所以无法利用与形状相关的信息。
卷积层可以正确理解图像等具有形状的数据。
卷积运算
偏置(bias)
数据各个位置都加上偏置
填充(padding)
使用填充主要是为了调整输出的大小。
步幅(stride)
输出数据的大小可以通过输入大小、滤波器大小、步幅、填充等计算,公式如下:
三维数据的卷积运算
输入数据和滤波器的通道数要设为相同的值
多个滤波器的卷积运算
输出数据的通道数=滤波器的个数
卷积运算的批处理
输入数据的通道数=滤波器的通道数
输入数据的batch数=输出数据的batch数
输出数据的通道数=滤波器的个数
池化层
一般来说,池化的窗口大小会和步幅设定成相同的值
经过池化运算,输入数据和输出数据的通道数不会发生变化

im2col
im2col是一个函数,将输入数据展开以适合滤波器,把包含批数量的4维数据转换成了2维数据,避免多维数据处理的过程中使用层层循环,加快计算速度。
卷积层的实现
将输入数据通过im2col转换为2维矩阵,将滤波器reshape为二维,进行矩阵相乘,最后reshape得到输出数据,实现卷积层
池化层的实现
将输入数据通过im2col转换为2维矩阵,每一行取最大值,最后reshape得到输出数据,实现池化层
CNN的可视化
卷积层的滤波器会提取边缘或斑块等原始信息。而刚才实现的CNN会将这些原始信息传递给后面的层。
随着层次变深,提取的信息更加高级
具有代表性的CNN
LeNet(CNN元祖)
与现在的CNN不同点:
1.使用subsampling-子采样层,缩小中间数据的大小
2.激活函数使用sigmoid函数
AlexNet
特点:
1.激活函数使用ReLU
2.使用Dropout
3.使用进行局部正规化的LRN(Local Response Normalization)层