cnn网络的理解
CNN是一种人工神经网络,CNN的结构可以分为3层:
卷积层(Convolutional Layer) - 主要作用是提取特征。
池化层(Max Pooling Layer) - 主要作用是下采样(downsampling),却不会损坏识别结果。
全连接层(Fully Connected Layer) - 主要作用是分类。
卷积层
我们用滤波器和输入的局部值做点积(对应位置相乘再相加)得到卷积后的结果
滤波器的长和宽可以变,步长也可以设定,步长即从左到右跨几步做下一个卷积运算。每次Filter(滤波器)从矩阵的左上角开始移动,每次移动的步长是1,从左到右,从上到下,依次移动到矩阵末尾之后结束,每次都把Filter和矩阵对应的区域做乘法,得出一个新的矩阵。这其实就是做卷积的过程。
经过卷积层的处理后就得到一些特征图
池化层
池化层就是对卷积层处理好的特征图做进一步的加强,即进行下采样,进一步加强特征。
池化方式有很多,其中包括,
最大池化,即选取2x2矩阵里最大的那一个数据保留
平均池化,选2x2矩阵的平均值保留。
丢失的一部分数据会不会对结果有影响,实际上,池化层不会对数据丢失产生影响,因为我们每次保留的输出都是局部最显著的一个输出,而池化之后,最显著的特征并没。
全连接层
全连接层的作用主要是进行分类。前面通过卷积和池化层得出的特征,在全连接层对这些总结好的特征做分类。全连接层就是一个完全连接的神经网络,根据权重每个神经元反馈的比重不一样,最后通过调整权重和网络得到分类的结果。
因为全连接层占用了神经网络80%的参数,因此对全连接层的优化就显得至关重要,现在也有用平均值来做最后的分类的。
激活函数
在卷积层后,和全连接层里,随处可见激活函数的存在,激活函数常见的有,sigmod,tanh,Relu函数等
那激活函数的作用,就是将线性的函数转为非线性的结果,使之更加符合现实的情况。
更常用的是Relu函数,可以防止使用tanh等梯度消失的问题。