CNN卷积神经网络学习笔记

CNN卷积神经网络学习笔记

对于其实现过程,大致可分为以下几个步骤:

输入层
卷积层
激活函数
池化层
全连接层

即 INPUT-CONV-RELU-POOL-FC

卷积层:用它来进行特征提取。这里需要特殊说明的是,对于卷积层而言,有一个重要的概念就是深度(depth),即为图像的通道数,如RGB的深度就是三层的。而卷积层的感受野(receptive,又称过滤器(filter),神经元(neuron),卷积核(kernel))的深度必须与输入图像的深度相同。但filter的个数是可以根据需要让程序员自己定义。

比如输入图像是32x32x3,3是它的深度(即R、G、B),卷积层是一个5x5x3的filter,通过一个filter与输入图像的卷积可以得到一个28x28x1的特征图,经过三层的卷积可得到28x28x3的特征图,如下图就是用两个filter对一个32x32x3进行一次卷积而得到的两个28x28x1的特征图。
CNN卷积神经网络学习笔记_第1张图片
CNN卷积神经网络学习笔记_第2张图片
激励函数:Relu,其定义为:
在这里插入图片描述
Relu图像如下图所示
CNN卷积神经网络学习笔记_第3张图片
选用这个而不选择sigmoid或tanh作为激励函数的原因是:

  • 速度快 sigmoid函数需要计算指数和倒数,relu函数其实就是一个max(0,x),计算代价小很多。
  • 稀疏性 通过对大脑的研究发现,大脑在工作的时候只有大约5%的神经元是激活的,而采用sigmoid激活函数的人工神经网络,其激活率大约是50%。有论文声称人工神经网络在15%-30%的激活率时是比较理想的。因为relu函数在输入小于0时是完全不激活的,因此可以获得一个更低的激活率。
  • 减轻梯度消失问题 sigmoid函数在使用BP(Back Propagation)算法时,每经过一层sigmoid神经元,梯度就要乘上一个σ’,而σ’的最大值是0.25,所以会导致梯度越来越小,这对于更深层次网络的训练是个很大的问题。而relu函数的导数是1,不会导致梯度减小,当然激活函数仅仅是导致梯度减小的一个因素,但使用relu激活函数可以让你训练更深层次的网络。

进行卷积操作后,会产生一个特征图(Feature Map),设其尺寸为O,filter尺寸为K,图像宽度为W,高度为H(图中的W用H替换即为计算后的高度,这里为了方便,简写为W),步幅为S,补零填充(Zero Padding)为P,(这里补零填充的意思为在原图像周围补几圈0,这是为了尽可能多地保留原始输入内容的信息。),则有:
在这里插入图片描述
CNN卷积神经网络学习笔记_第4张图片

池化层:对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征
一般分为两种:最大池化(Max Pooling)和平均池化(Avy Pooling),一般用得比较多的是最大池化。

全连接层:连接所有的特征,将输出值送给分类器
总过程引用下图描述:
CNN卷积神经网络学习笔记_第5张图片

第一次写博客,有错误之处欢迎读者指出
引用文章:
https://www.cnblogs.com/zf-blog/p/6075286.html
https://www.zhihu.com/question/52668301/answer/131573702
https://blog.csdn.net/qq_30979017/article/details/79506593

你可能感兴趣的:(机器学习,CNN卷积神经网络,机器学习)