pytorch学习笔记(三)---卷积神经网络基础

文章目录

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


前言

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


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

  如下图是卷积神经网络的整体架构,分为四部分:输入层、卷积层、池化层、全连接层。
pytorch学习笔记(三)---卷积神经网络基础_第1张图片

1.输入层

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

2.卷积层

卷积层是如何工作的呢?
pytorch学习笔记(三)---卷积神经网络基础_第3张图片

  假设我们输入的是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学习笔记(三)---卷积神经网络基础_第4张图片
pytorch学习笔记(三)---卷积神经网络基础_第5张图片
pytorch学习笔记(三)---卷积神经网络基础_第6张图片
  左边三个矩阵是输入Input,相当于d=3时有三个通道图,维度是5*5*3,当我们填充pad为1之后,即为7*7*3。现有两个卷积核,分别为Filter W0、Filter W1,卷积核维度是3*3*3,前两个维度是我们自己定的,大量实验证明3*3最好,最后一个维度3是和我们输入数据同维。通过原始输入图像和卷积核做运算最后相加就可以得到相应的输出,即Output。
  填充的目的是什么呢? 可以发现处于矩阵中心的数据在进行卷积的时候会被多次计算,即卷积核认为其更加重要,为了减少这种影响,我们认为在矩阵外围填充若干圈0,以使边缘数据也可以更多的参与卷积。
pytorch学习笔记(三)---卷积神经网络基础_第7张图片

3.池化层

  由于多次卷积之后原始输入会变大,其中有很多无关紧要的输出并且浪费了很多算力,想要解决这个问题就需要我们进行池化操作。池化操作有两种,分别是最大池化和平均池化,根据任务需求进行选择池化方式。
pytorch学习笔记(三)---卷积神经网络基础_第8张图片
pytorch学习笔记(三)---卷积神经网络基础_第9张图片
  例如最大池化max-pooling,即将选中区域中的最大值选出,如上图所示。而平均池化mean-pooling即将选中区域数字相加之后计算平均值选出。

4.全连接层

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


二、总结

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

你可能感兴趣的:(pytorch学习笔记,cnn,pytorch,学习)