窝牛号

人工智能TensorFlow(十三)读懂CNN卷积神经网络

私信小编:python资料

可以免费获取python资料哟

通过往期文章的分享,我们了解了神经网络的结构,一般分为输入层,隐藏层,输出层

TensorFlow神经网络

那什么是卷积神经网络那,这就要我们追溯一下人类识别图像的原理

人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。下面是人脑进行人脸识别的一个示例:

人类识别图形原理

对于不同的物体,人类视觉也是通过这样逐层分级,来进行认知的:

我们可以看到,在最底层特征基本上是类似的,就是各种边缘,越往上,越能提取出此类物体的一些特征(轮子、眼睛、躯干等),到最上层,不同的高级特征最终组合成相应的图像,从而能够让人类准确的区分不同的物体。CNN卷积神经网络就是来源于此识别过程来实现。

卷积神经网络

卷积神经网络依旧是层级网络,只是层的功能和形式做了变化,可以说是传统神经网络的一个改进。比如下图中就多了许多传统神经网络没有的层次。

CNN神经网络

一般卷积神经网络有如下结构:

• 数据输入层/ Input layer

• 卷积计算层/ CONV layer

• ReLU激励层 / ReLU layer

• 池化层 / Pooling layer

• 全连接层 / FC layer

当然卷积层,Relu激励层与Pooling层可以多次使用

输入层/ Input layer

该层要做的处理主要是对原始图像数据进行预处理,其中包括:

• 去均值:把输入数据各个维度都中心化为0,如下图所示,其目的就是把样本的中心拉回到坐标系原点上。

• 归一化:幅度归一化到同样的范围,如下所示,即减少各维度数据取值范围的差异而带来的干扰,比如,我们有两个维度的特征A和B,A范围是0到10,而B范围是0到10000,如果直接使用这两个特征是有问题的,好的做法就是归一化,即A和B的数据都变为0到1的范围。

• PCA/白化:用PCA降维;白化是对数据各个特征轴上的幅度归一化

卷积计算层/ CONV layer

这一层是卷积神经网络最重要的一个层次,也是“卷积神经网络”的名字来源。

在这个卷积层,有两个关键操作:

• 局部关联。每个神经元看做一个滤波器(filter)

• 窗口(receptive field)滑动, filter对局部数据计算

下图比较简单的介绍了一个卷积的过程,原始数据是5*5 卷积核为3*3 步长为1

CNN卷积计算

ReLU激励层 / ReLU layer

这一层也是我们前期分享的激励函数层

CNN采用的激励函数一般为ReLU(The Rectified Linear Unit/修正线性单元),它的特点是收敛快,求梯度简单,但较脆弱,图像如下。

Relu

池化层 / Pooling layer

池化层夹在连续的卷积层中间, 用于压缩数据和参数的量,减小过拟合。简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。池化层用的方法有Max pooling 和 average pooling,而实际用的较多的是Max pooling。

Pooling

对于每个2*2的窗口选出最大的数作为输出矩阵的相应元素的值,比如输入矩阵第一个2*2窗口中最大的数是6,那么输出矩阵的第一个元素就是6,如此类推。

全连接层 / FC layer

两层之间所有神经元都有权重连接,通常全连接层在卷积神经网络尾部。也就是跟传统的神经网络神经元的连接方式是一样的:

FC layer

下期分享

LeNet 手写数字识别

LeNet

谢谢大家的点赞与转发,关于分享的文章,大家有任何问题,可以在评论区一起探讨学习!!!

本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除

窝牛号 wwww.93ysy.com   沪ICP备2021036305号-1