当前位置:   article > 正文

CNN卷积神经网络的网络结构和学习原理_简述卷积神经网络的结构及其学习机理

简述卷积神经网络的结构及其学习机理

卷积神经网络,主要是对图片进行处理。假如需要对一个1000*1000的图片进行分类,如果用传统的机器学习或者DNN,如要输入1000000个特征,当然也可以提前用一些方法进行降维,但是处理还是不方便。有人提出,人类对于图像的判断,也是通过对图像进行多层抽象完成。于是就提出了卷积的概念。

 

 

图中是一个图形识别的CNN模型。可以看出最左边的船的图像就是我们的输入层,计算机理解为输入若干个矩阵,这点和DNN基本相同。接着是卷积层(Convolution Layer),这个是CNN特有的。卷积层的激活函数使用的是ReLU(x)=max(0,x)。在卷积层后面是池化层(Pooling layer),池化层没有激活函数。

卷积层+池化层的组合可以在隐藏层出现很多次,上图中出现两次。而实际上这个次数是根据模型的需要而来的。当然我们也可以灵活使用使用卷积层+卷积层,或者卷积层+卷积层+池化层的组合,这些在构建模型的时候没有限制。但是最常见的CNN都是若干卷积层+池化层的组合,如上图中的CNN结构。

在若干卷积层+池化层后面是全连接层(Fully Connected Layer, 简称FC),全连接层其实就是我们前面讲的DNN结构,只是输出层使用了Softmax激活函数来做图像识别的分类。

 

什么是卷积?可以看下面这个动态图。

http://cs231n.github.io/assets/conv-demo/index.html

例子中,输入是三个矩阵(张量)(对应RGB),原始矩阵是5*5*3,但是进行了padding,变成了一个7*7*3的张量。那么这个张量对应的卷积核也应该是N*N*3的一个张量,也就是W0.

这里用了两个卷积核,也就是两个N*N*3的张量。

每个子矩阵进行卷积得到的结果(X1点积X2 + 偏置值),加起来进行Relu,将小于0的值设置为0.

为什么要进行卷积?对特征进行抽象,提出原始特征中的重要部分。每个卷积核对应一个重要的特征。

为什么卷积过程要进行padding?

卷积核在对张量进行striding的时候,对边框数据只用一次就丢弃了,太浪费。同时为了padding不引入噪声,可以填充一圈0.

 

什么是池化?为什么要池化?

池化就是对输入张量的各个子矩阵进行压缩。假如是2x2的池化,那么就将子矩阵的每2x2个元素变成一个元素,这样输入矩阵的维度就变小了。

要想将输入子矩阵的每nxn个元素变成一个元素,那么需要一个池化标准。常见的池化标准有2个,MAX或者是Average。即取对应区域的最大值或者平均值作为池化后的元素值。

下面这个例子采用取最大值的池化方法。同时采用的是2x2的池化。步幅为2。

 

 

如何进行图像分类?

在网络的最后,有一个全连接层,输出层采用softmax激活函数。输出该图像对应类别的概率。然后可以反向传递误差,更新权值。

CNN+TensorFlow实现图像分类

https://blog.csdn.net/qq_26645205/article/details/79459166

参考文献:

https://www.cnblogs.com/pinard/p/6483207.html

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/103909
推荐阅读
相关标签
  

闽ICP备14008679号