pytorch 深度学习实践 第10讲 卷积神经网络(基础篇)

第10讲 卷积神经网络(基础篇)Basic CNN

pytorch学习视频——B站视频链接:《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibili

以下是视频内容笔记以及小练习源码,本节代码有点多,另外单独写的代码——pytorch 深度学习实践 第10讲 卷积神经网络(基础篇)_代码
以下笔记纯属个人理解,如有错误欢迎路过的大佬指出 。

1. 基本概念

  • 全连接网络

    • 全连接层:像前几节中的用到的线性层那样的网络层,称为全连接层。也就是线性层中的每一个输入结点都会参与下一层任何一个输出结点的计算上,这样的线性层叫做全连接层。
    • 如果整个网络都是用这种全连接层连接在一起的,那就称为全连接网络。
  • 卷积神经网路

    直接对图像进行操作,保留了更多的空间特征,前面卷积和采样的部分称为特征提取,后面全连接部分称为分类。

pytorch 深度学习实践 第10讲 卷积神经网络(基础篇)_第1张图片

2. 卷积层

使用RGB图像,输入通道是3,输出通道是卷积核的数量

pytorch 深度学习实践 第10讲 卷积神经网络(基础篇)_第2张图片
卷积公式: y ( t ) = ∫ − ∞ ∞ x ( p ) h ( t − p ) d p = x ( t ) ∗ h ( t ) y(t)=\int_{-\infty}^{\infty} x(p) h(t-p) d p=x(t) * h(t) y(t)=x(p)h(tp)dp=x(t)h(t)

  • 多通道卷积如何操作

    每个通道单独与一个卷积核进行卷积,图像通道数为3的话,每一个卷积核对应的通道数也是3,然后将这三个卷积核分别与图像的R G B通道图像求卷积,最后再将求得的结果相加得到最终的卷积结果。如图所示。
    pytorch 深度学习实践 第10讲 卷积神经网络(基础篇)_第3张图片

    • 一个拥有三个通道的输入图像在经过卷积处理之后变成了单通道的输出图像
      pytorch 深度学习实践 第10讲 卷积神经网络(基础篇)_第4张图片

    • 图像的通道、高度、宽度变化如图所示。

      卷积核的通道数与输入图像通道数相等,最终得到的是一个单通道的新图像。
      pytorch 深度学习实践 第10讲 卷积神经网络(基础篇)_第5张图片

    • 得到m个通道的输出图像

      使用m个卷积核可以得到m个图像,将这些图像拼接在一起即可得到一个 m × W ′ × H ’ m×W'×H’ m×W×H的输出图像
      pytorch 深度学习实践 第10讲 卷积神经网络(基础篇)_第6张图片

  • 卷积核的形状是一个4维张量

    将上述卷积核拼接起来就组成了一个4维张量,m是卷积核的个数,n是卷积核通道数,最后两维是宽和高。结构如图所示:
    pytorch 深度学习实践 第10讲 卷积神经网络(基础篇)_第7张图片

3. 卷积层参数解析

  • padding=1

    在输入图像上填充0使输入图像在做完卷积之后与原图像大小一样,如图所示
    pytorch 深度学习实践 第10讲 卷积神经网络(基础篇)_第8张图片
    见代码padding.py

  • stride=2(步长为2)

    卷积核每次移动两个位置,如图所示
    pytorch 深度学习实践 第10讲 卷积神经网络(基础篇)_第9张图片

4. 下采样

maxpooling最大池化,效果如图所示:

经过池化层操作后,通道数不变。
pytorch 深度学习实践 第10讲 卷积神经网络(基础篇)_第10张图片
见代码maxpooling.py

5. 卷积神经网络

  • 一个简单的例子

    输入图像(batch, 1, 28, 28)——> 输出(batch, 10)

    中间经过一个卷积——一个池化——一个卷积——一个池化——全连接层 这些过程,图像的通道数和高度宽度变化如图所示:
    pytorch 深度学习实践 第10讲 卷积神经网络(基础篇)_第11张图片

  • 实现

    结构如图所示:

    参考代码cnn.py模型设计部分 。
    pytorch 深度学习实践 第10讲 卷积神经网络(基础篇)_第12张图片
    使用mnist数据集训练和测试,结果:
    pytorch 深度学习实践 第10讲 卷积神经网络(基础篇)_第13张图片

你可能感兴趣的:(pytorch学习,python,pytorch)