Advertisement

深度卷积神经网络学习(CNN)

阅读量:

什么是卷积神经网络

CNN :神经网络在前面的学习中我们已经了解过很多了,其本质就是多层感知机,卷积神经网络其实也一样,但是我们可以将其看成多层感知机的变种。它成功的原因在于其所采用的局部连接权值共享 的方式:

  • 一方面减少了权值的数量使得网络易于优化,算力大大提高

  • 另一方面降低了模型的复杂度,也就是减小了过拟合的风险

该优点在网络的输入是图像时表现的更为明显,使得图像可以直接作为网络的输入,避免了传统识别算法中复杂的特征提取和数据重建的过程,在二维图像的处理过程中有很大的优势。

2.模型构建:

CNN :首先了解卷积神经网络的四个组件:

  • 卷积层(Convolution)

  • 非线性映射(ReLu),即非线性激活函数

复制代码
    model.add(Conv2D(32,(3,3),activation='relu',padding='valid',input_shape=((28,28,1))))
    
    
    python
    
    
  • 池化层(Pooling)
复制代码
    model.add(MaxPool2D(2))
    
    
    python
    
    
  • 分类层(FC)
复制代码
    model.add(Flatten())
    
    
    python
    
    

接下来我主要介绍卷积层和池化层

  • 首先介绍卷积层,卷积层主要有以下三种特性:
    • 参数共享

    • 自动提取特征

    • 平移不变性

卷积操作其实并不算复杂,但是他有很多种卷积方式,我们在进行卷积之后输出的图像也会和我们选择的卷积核有关,能够让维度下降、不变、甚至上升。

  • 接着介绍池化层,池化层一般分为以下两种池化:
    • 一般池化(最常用的池化,池化的过程中,不会将前面操作过的像素再用于池化操作)

    • 重叠池化,和一般池化相反,一般池化的步长为1时,使用过的像素就会重叠,即重复使用

    • 池化层的同样拥有三种特性:

      • 池化无参数

      • 具有降维作用

      • 缩放不变

一般的池化操作我们会使用最大池化,即在选定的部分像素中,我们选择其中最大的一个像素值来作为这一部分的像素的代表,这就使得整体的数据降维,我们生活中常见的马赛克,就是池化操作产生的。

常见的卷积神经网络模型

  1. LetNet-5模型
    在这里插入图片描述
    Conv-Pool-Conv-Pool-FC-FC-Softmax

模型相对简单,层数也较少

AlexNet模型
在这里插入图片描述
Conv-Pool-Conv-Pool-Conv-Conv-Conv-Pool-FC-FC-Softmax

VGG-16模型
在这里插入图片描述
Conv-Conv-Pool-Conv-Conv-Pool-Conv-Conv-Conv-Pool-Conv-Conv-Conv-Pool-FC-FC-FC-Softmax

GoogleNet模型 (Inception V1)
在这里插入图片描述
是一种既有深度又有宽度的模型,具有以下功能:

  • 实现跨通道的交互和信息整合

  • 可以把不同特征图组合

  • 全连接可以看作1X1卷积操作

  1. ResNet模型
    在这里插入图片描述
    该模型使用ReLu函数用于激活,改善了梯度消失的问题,使信息前后向传播更加顺畅
  • 提升了参数利用率

  • 底层的特征也进行了充分的传递,泛化性较好

  • Loss对底层参数有一定的影响,能较容易地进行训练

3.实验过程:

  1. 手写数字集测试
  • 首先我们对比一下,图片在经过卷积或者池化操作之后,跟原图会有什么区别
复制代码
    # TensorFlow 卷积池化
    import tensorflow as tf
    import matplotlib.pyplot as plt
    import numpy as np
    
    
    python
    
    

全部评论 (0)

还没有任何评论哟~