文章目录

  • 前言
  • 一、卷积神经网络的整体架构
  • 1.输入层
  • 2.卷积层
  • 3.池化层
  • 4.全连接层
  • 二、总结



前言

  卷积神经网络的用途很广泛,包括检测任务、分类与检索任务、超分辨率重构、医学任务、无人驾驶、人脸识别等,在机器学习领域占领一席之地,本节介绍卷积神经网络的基础内容。


一、卷积神经网络的整体架构

  如下图是卷积神经网络的整体架构,分为四部分:输入层、卷积层、池化层、全连接层。

卷积神经网络结构动态图 卷积神经网络基本结构_池化

1.输入层

  卷积神经网络的输入是原始图像(三维矩阵),维度为height*width*depth,简称h*w*d。假设输入图片是32*32*3,分别对应h*w*d;其中对于图片输入来说通常是以RGB三通道的形式输入,即d为3。如下图所示。

卷积神经网络结构动态图 卷积神经网络基本结构_学习_02

2.卷积层

卷积层是如何工作的呢?

卷积神经网络结构动态图 卷积神经网络基本结构_池化_03

  假设我们输入的是5*5*3的图像,左上角的那个3*3*1是我们定义的一个卷积核,通过原始输入图像和卷积核做运算可以得到绿色部分的结果,怎么样的运算呢?左上角深色部分的中间数字是像素,右下角数字是卷积核的数字,对应相乘再相加即得到最终结果(即绿色图部分),例如:3*0+3*1+2*2+0*2+0*2+1*0+3*0+1*1+2*2=12

  那么当d大于1时是如何计算的呢?

卷积神经网络结构动态图 卷积神经网络基本结构_pytorch_04


卷积神经网络结构动态图 卷积神经网络基本结构_池化_05


卷积神经网络结构动态图 卷积神经网络基本结构_学习_06


  左边三个矩阵是输入Input,相当于d=3时有三个通道图,维度是5*5*3,当我们填充pad为1之后,即为7*7*3。现有两个卷积核,分别为Filter W0、Filter W1,卷积核维度是3*3*3,前两个维度是我们自己定的,大量实验证明3*3最好,最后一个维度3是和我们输入数据同维。通过原始输入图像和卷积核做运算最后相加就可以得到相应的输出,即Output。

  填充的目的是什么呢? 可以发现处于矩阵中心的数据在进行卷积的时候会被多次计算,即卷积核认为其更加重要,为了减少这种影响,我们认为在矩阵外围填充若干圈0,以使边缘数据也可以更多的参与卷积。

卷积神经网络结构动态图 卷积神经网络基本结构_cnn_07

3.池化层

  由于多次卷积之后原始输入会变大,其中有很多无关紧要的输出并且浪费了很多算力,想要解决这个问题就需要我们进行池化操作。池化操作有两种,分别是最大池化和平均池化,根据任务需求进行选择池化方式。

卷积神经网络结构动态图 卷积神经网络基本结构_池化_08


卷积神经网络结构动态图 卷积神经网络基本结构_cnn_09


  例如最大池化max-pooling,即将选中区域中的最大值选出,如上图所示。而平均池化mean-pooling即将选中区域数字相加之后计算平均值选出。

4.全连接层

  全连接层相当于在最后面加一层或多层传统神经网络(NN)层,我们在连接全连接层前,需要把我们的CNN的三维矩阵进行展平成二维,比如说从池化层出来的是5*5*3的图像,在输入到全连接层展平成1*75以满足全连接层的输入模式。


二、总结

  本文简要分析了卷积神经网络的组成,在下一篇文章中,将会用实际案例演示pytorch构建卷积神经网络用于训练的方法