卷积¶

卷积在 pytorch 中有两种方式,一种是 torch.nn.Conv2d(),一种是 torch.nn.functional.conv2d(),这两种形式本质都是使用一个卷积操作

这两种形式的卷积对于输入的要求都是一样的,首先需要输入是一个 torch.autograd.Variable() 的类型,大小是 (batch, channel, H, W),其中 batch 表示输入的一批数据的数目,第二个是输入的通道数,一般一张彩色的图片是 3,灰度图是 1,而卷积网络过程中的通道数比较大,会出现几十到几百的通道数,H 和 W 表示输入图片的高度和宽度,比如一个 batch 是 32 张图片,每张图片是 3 通道,高和宽分别是 50 和 100,那么输入的大小就是 (32, 3, 50, 100)

下面举例来说明一下这两种卷积方式

下面我们定义一个算子对其进行轮廓检测

下面我们可视化边缘检测之后的结果

可以看到两种形式能够得到相同的效果,不同的地方相信你也看到了,使用 nn.Conv2d() 相当于直接定义了一层卷积网络结构,而使用 torch.nn.functional.conv2d() 相当于定义了一个卷积的操作,所以使用后者需要再额外去定义一个 weight,而且这个 weight 也必须是一个 Variable,而使用 nn.Conv2d() 则会帮我们默认定义一个随机初始化的 weight,如果我们需要修改,那么取出其中的值对其修改,如果不想修改,那么可以直接使用这个默认初始化的值,非常方便

实际使用中我们基本都使用 nn.Conv2d() 这种形式

池化层¶

卷积网络中另外一个非常重要的结构就是池化,这是利用了图片的下采样不变性,即一张图片变小了还是能够看出了这张图片的内容,而使用池化层能够将图片大小降低,非常好地提高了计算效率,同时池化层也没有参数。池化的方式有很多种,比如最大值池化,均值池化等等,在卷积网络中一般使用最大值池化。

在 pytorch 中最大值池化的方式也有两种,一种是 nn.MaxPool2d(),一种是 torch.nn.functional.max_pool2d(),他们对于图片的输入要求跟卷积对于图片的输入要求是一样了,就不再赘述,下面我们也举例说明

可以看到图片的大小减小了一半,那么图片是不是变了呢?我们可以可视化一下

可以看到图片几乎没有变化,说明池化层只是减小了图片的尺寸,并不会影响图片的内容

跟卷积层一样,实际使用中,我们一般使用 nn.MaxPool2d()

PyTorch 深度学习:30分钟快速入门相关推荐

  1. PyTorch 深度学习:36分钟快速入门——GAN

    自动编码器和变分自动编码器,不管是哪一个,都是通过计算生成图像和输入图像在每个像素点的误差来生成 loss,这一点是特别不好的,因为不同的像素点可能造成不同的视觉结果,但是可能他们的 loss 是相同 ...

  2. PyTorch 深度学习:34分钟快速入门——自动编码器

    自动编码器最开始是作为一种数据压缩方法,同时还可以在卷积网络中进行逐层预训练,但是随后更多结构复杂的网络,比如 resnet 的出现使得我们能够训练任意深度的网络,自动编码器就不再使用在这个方面,下面 ...

  3. PyTorch 深度学习:32分钟快速入门——ResNet

    ResNet 当大家还在惊叹 GoogLeNet 的 inception 结构的时候,微软亚洲研究院的研究员已经在设计更深但结构更加简单的网络 ResNet,并且凭借这个网络子在 2015 年 Ima ...

  4. PyTorch 深度学习:37分钟快速入门——FCN 做语义分割

    语义分割是一种像素级别的处理图像方式,对比于目标检测其更加精确,能够自动从图像中划分出对象区域并识别对象区域中的类别 在 2015 年 CVPR 的一篇论文 Fully Convolutional N ...

  5. PyTorch 深度学习:33分钟快速入门——VGG

    CIFAR 10¶ cifar 10 这个数据集一共有 50000 张训练集,10000 张测试集,两个数据集里面的图片都是 png 彩色图片,图片大小是 32 x 32 x 3,一共是 10 分类问 ...

  6. PyTorch 深度学习:32分钟快速入门——DenseNet

    DenseNet¶ 因为 ResNet 提出了跨层链接的思想,这直接影响了随后出现的卷积网络架构,其中最有名的就是 cvpr 2017 的 best paper,DenseNet. DenseNet ...

  7. PyTorch 深度学习:38分钟快速入门——RNN 做图像分类

    RNN 特别适合做序列类型的数据,那么 RNN 能不能想 CNN 一样用来做图像分类呢?下面我们用 mnist 手写字体的例子来展示一下如何用 RNN 做图像分类,但是这种方法并不是主流,这里我们只是 ...

  8. PyTorch 深度学习:35分钟快速入门——变分自动编码器

    变分编码器是自动编码器的升级版本,其结构跟自动编码器是类似的,也由编码器和解码器构成. 回忆一下,自动编码器有个问题,就是并不能任意生成图片,因为我们没有办法自己去构造隐藏向量,需要通过一张图片输入编 ...

  9. PyTorch 深度学习:31分钟快速入门——Batch Normalization

    Batch Normalization¶ 前面在数据预处理的时候,我们尽量输入特征不相关且满足一个标准的正态分布,这样模型的表现一般也较好.但是对于很深的网路结构,网路的非线性层会使得输出的结果变得相 ...

最新文章

  1. 牛客网暑期ACM多校训练营(第六场)J Heritage of skywalkert
  2. C++中的类模板详细讲述
  3. 想给男友一个惊喜,没想到是这样的结局......
  4. android 打开公众号页面_解决「微信公众号」开发网页安卓端访问空白问题
  5. python 量化投资 长期横盘_python量化投资才是最正确的方式,只教方法,不股荐!...
  6. Apache正向代理与反向
  7. Tomcat网站根目录设置
  8. MPEG-TS封装格式
  9. 12月19日科技资讯|富士康员工涉嫌盗卖 iPhone 零件遭调查;IntelliJ IDEA 2019.3.1 发布
  10. python截取_python如何截取字符串中特定部分
  11. 深入理解Java Stream流水线
  12. 火狐浏览器页面元素查看
  13. C++无法在头文件中定义string类数据
  14. ElasticFusion离线数据集运行结果再现问题总结
  15. adb一打开就闪退_常用的adb命令
  16. 搭建本地Spring Initializr服务(2020/4/17)
  17. 腾讯云认证云从业者考试攻略(人工智能从业者认证)
  18. Infiniband互连网络概述
  19. 利用 Python 得到未来七天天气预报
  20. 转:添加国内镜像源,飞速下载

热门文章

  1. DeFi借贷协议Liquity宣布主网将于4月5日上线
  2. [BJWC2011]元素
  3. day 13 课后作业
  4. redis linux中的安装
  5. JavaScript中各存在性函数
  6. 关于移动端点击事件的问题
  7. JAVA多线程售票问题
  8. careercup-数学与概率 7.7
  9. Flash Video带宽估测
  10. 打造自己的专业图像工具-Visual C++ 2005图像编程系列【一】