从上篇博客中, 我们可以了解搭建卷积神经网络的基础步骤
数据输入层 / Input layer
• 卷积计算层 / CONV layer
• ReLU 激励层 / ReLU layer
• 池化层 / Pooling layer
• 全连接层 / FC layer
1. 数据输入层
该层要做的处理主要是对原始图像数据进行预处理, 其中包括:
• 去均值: 把输入数据各个维度都中心化为 0, 如下图所示, 其目的就是把样本的中心拉回到坐标系原点上.
• 归一化: 幅度归一化到同样的范围, 如下所示, 即减少各维度数据取值范围的差异而带来的干扰, 比如, 我们有两个维度的特征 A 和 B,A 范围是 0 到 10, 而 B 范围是 0 到 10000, 如果直接使用这两个特征是有问题的, 好的做法就是归一化, 即 A 和 B 的数据都变为 0 到 1 的范围.
• PCA / 白化: 用 PCA 降维; 白化是对数据各个特征轴上的幅度归一化
2. 卷积计算层
这一层就是卷积神经网络最重要的一个层次, 也是 "卷积神经网络" 的名字来源.
在这个卷积层, 有两个关键操作:
• 局部关联. 每个神经元看做一个滤波器(filter)
• 窗口 (receptive field) 滑动, filter 对局部数据计算
先介绍卷积层遇到的几个名词:
• 深度 / depth(解释见下图)
• 步长 / stride (窗口一次滑动的长度)
• 填充值 / zero-padding
有上篇视频可以很好的了解什么是窗口互动. 我们有一个 5x5 的图像, 我们用一个 3x3 的卷积核: 来对图像进行卷积操作(可以理解为有一个滑动窗口, 把卷积核与对应的图像像素做乘积然后求和), 得到了 3x3 的卷积结果. 因此步长就很好理解了, 就是窗口一次滑动的长度. 在全零填充中, 5x5 的图像填充为 7x7 的图像, 0 就为填充值 / zero-padding
图像深度是指存储每个像素所用的位数, 也用于度量图像的色彩分辨率. RGB 深度为 3
3. 激励层
把卷积层输出结果做非线性映射.
4. 池化层
池化层夹在连续的卷积层中间, 用于压缩数据和参数的量, 减小过拟合.
简而言之, 如果输入是图像的话, 那么池化层的最主要作用就是压缩图像.
池化层的具体作用.
1. 特征不变性, 也就是我们在图像处理中经常提到的特征的尺度不变性, 池化操作就是图像的 resize, 平时一张狗的图像被缩小了一倍我们还能认出这是一张狗的照片, 这说明这张图像中仍保留着狗最重要的特征, 我们一看就能判断图像中画的是一只狗, 图像压缩时去掉的信息只是一些无关紧要的信息, 而留下的信息则是具有尺度不变性的特征, 是最能表达图像的特征.
2. 特征降维, 我们知道一幅图像含有的信息是很大的, 特征也很多, 但是有些信息对于我们做图像任务时没有太多用途或者有重复, 我们可以把这类冗余信息去除, 把最重要的特征抽取出来, 这也是池化操作的一大作用.
3. 在一定程度上防止过拟合, 更方便优化.
参考: https://blog.csdn.net/wuyujundy/article/details/78743459
卷积神经网络(基础知识回顾)- 第七讲
来源: http://www.bubuko.com/infodetail-3098666.html