@Author:By Runsen
原文:https://maoli.blog.csdn.net/article/details/88777955
卷积神经网络
卷积是指将卷积核应用到某个张量的所有点上,通过将 卷积核在输入的张量上滑动而生成经过滤波处理的张量。
介绍的目标识别与分类,就是在前面问题的基础 上进行扩展,实现对于图像等分类和识别。
实现对图像的高准确率识别离不开一种叫做卷积神经网络的深度学习 技术
卷积神经网络主要应用于计算机视觉相关任务,但它能处理的任务并 不局限于图像,其实语音识别也是可以使用卷积神经网络。
CNN由输入和输出层以及多个隐藏层组成,隐藏层可分为卷积层,池化层、RELU层和全连通层。
- 输入层
CNN的输入一般是二维向量,可以有高度,比如,RGB图像
- 卷积层
卷积层是CNN的核心,层的参数由一组可学习的滤波器(filter)或内核(kernels)组成,它们具有小的感受野,延伸到输入容积的整个深度。在前馈期间,每个滤波器对输入进行卷积,计算滤波器和输入之间的点积,并产生该滤波器的二维激活图(输入一般二维向量,但可能有高度(即RGB))。简单来说,卷积层是用来对输入层进行卷积,提取更高层次的特征。
在这里插入图片描述
卷积层 | 三个参数 |
---|---|
ksize | 卷积核的大小 |
strides | 卷积核移动的跨度 |
padding | 边缘填充 |
对于图像:使用layers.Conv2D() 具体参数
代码语言:javascript复制 layers.Conv2D(filters, kernel_size, strides=(1, 1), padding='valid', data_format=None, dilation_rate=(1, 1), activation=None, use_bias=True, kernel_initializer='glorot_uniform', bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None, **kwargs)
- 池化层
池化层又称下采样,它的作用是减小数据处理量同时保留有用信息,通常池化层是每邻域四个像素中的最大值变为一个像素(这就是下一讲要降的max_pooling),为什么可以这么做呢?这是因为卷积已经提取出特征,相邻区域的特征是类似,近乎不变,这是池化只是选出最能表征特征的像素,缩减了数据量,同时保留了特征,何乐而不为呢?池化层的作用可以描述为模糊图像,丢掉了一些不是那么重要的特征.
图形描述:
layers.MaxPooling2D最大池化
代码语言:javascript复制layers.MaxPooling2D(pool_size=(2, 2), strides=None, padding='valid', data_format=None, **kwargs)
- RELU层
这个RELU全名将修正线性单元,是神经元的激活函数,对输入值x的作用是max(0,x),当然RELU只是一种选择,还有选Leak-Relu等等,一般都是用Relu!
- 全连通层
这个层就是一个常规的神经网络,它的作用是对经过多次卷积层和多次池化层所得出来的高级特征进行全连接(全连接就是常规神经网络的性质),算出最后的预测值。
将最后的输出与全部特征连接,我们要使用全部的 特征,为最后的分类的做出决策。
- 输出层
输出层就不用介绍了,就是对结果的预测值,一般会加一个softmax层。
整体结构