设计网络结构、看网络结构源码时时常需要计算输入在结构中经过卷积层、pooling层后尺寸大小,特此记录。

pytorch中二维卷积层接口为 Conv2d() ,参数详情不多赘述,详情请参阅官方文档。我在此主要说明卷积层对输入计算之后size的变化情况。

例如,

卷积层的in_channels首先要与input的channels相对应,具体到上例,就是黑色和蓝色框所对应的部分。out_channels自行设定,表示输出卷积核个数。kernel_size为卷积核大小,stride为卷积核在输入上的窗口移动步长,当输入stride参数为int时,表示卷积核移动在横向与纵向都是相同步长,若stride=(x,y),表示在横轴与纵轴以不同步长滑动。   padding简单理解为对输入特征图四周的填充。kernel_size、padding、stride会影响输出特征图的尺寸。

从上图可知,输入的 batchsize=64 在网络结构前向传递过程中不改变大小。同时,在kernel_size=3,stride=1,padding=1的前提下,卷积不改变输入图像的尺寸。

特征图尺寸计算方式:

feature-map height  :   {(input_height - kernel_size + 2*padding) / stride[0] }+1  (stride[0]表示横向移动步长])

相似地,feature-map width    :   {(input_width - kernel_size + 2*padding) / stride[1] }+1  (stride[1]表示纵向移动步长])

再举个例子,输入经过两层卷积和一层pooling后尺寸。

计算过程:

经过第一层卷积后:(224-7+2*2)/2+1=111

第二层卷积:(111-3+1*2)/1+1=111

pooling:(111-3)/2+1=55

每一层的输出channels即是下一层的输入channels。

Resnet、Inception结构中有大量kernel_size=3,stride=1,padding=1的层,他们不改变特征图图大小。

总结一下,设计网络结构时候要注意输入channels和卷积层的in_channels保持一致,不同的kernel_size、padding、stride会影响输出特征图尺寸。

参考资料:

pytorch中文文档 http://pytorch-cn.readthedocs.io/zh/latest/
--------------------- 
作者:_Neo__ 
来源:CSDN 
原文:https://blog.csdn.net/a132582/article/details/78658155 
版权声明:本文为博主原创文章,转载请附上博文链接!

Pytorch-学习记录 卷积操作——Tensor.size()相关推荐

  1. Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)

    Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...

  2. PyTorch学习记录——PyTorch进阶训练技巧

    PyTorch学习记录--PyTorch进阶训练技巧 1.自定义损失函数 1.1 以函数的方式定义损失函数 1.2 以类的方式定义损失函数 1.3 比较与思考 2.动态调整学习率 2.1 官方提供的s ...

  3. pytorch中的卷积操作详解

    首先说下pytorch中的Tensor通道排列顺序是:[batch, channel, height, width] 我们常用的卷积(Conv2d)在pytorch中对应的函数是: torch.nn. ...

  4. 黄金时代 —— Pytorch学习记录(一)

    文章目录 Tensor Tensor操作 桥接 NumPy Cuda张量 Autograd:自动求导 张量 梯度 定义网络 关于nn和nn.Module模块 网络 BP过程 损失函数 反向传播 更新权 ...

  5. PyTorch学习记录——PyTorch生态

    Pytorch的强大并不仅局限于自身的易用性,更在于开源社区围绕PyTorch所产生的一系列工具包(一般是Python package)和程序,这些优秀的工具包极大地方便了PyTorch在特定领域的使 ...

  6. pytorch tensor_[PyTorch 学习笔记] 1.2 Tensor(张量)介绍

    本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/tensor_introduce1.py https: ...

  7. PyTorch学习记录-1PyTorch安装

    学习建议里有PyTorch,所以我就开始了PyTorch的学习. 首先就是安装啦,去官网很清楚,可以选择自己的版本和平台,然后下面就会出现 Run this command:  后面跟着的命令复制运行 ...

  8. Pytorch学习记录(七):自定义模型 Auto-Encoders 使用numpy实现BP神经网络

    文章目录 1. 自定义模型 1.1 自定义数据集加载 1.2 自定义数据集数据预处理 1.3 图像数据存储结构 1.4 模型构建 1.5 训练模型 2. Auto-Encoders 2.1 无监督学习 ...

  9. [Pytorch] 学习记录(七)MNIST多分类问题

    在处理多分类问题的时候会用到一个叫做softmax的分类器,是用来将输出结果划归到[0,1]的,本讲将主要从softmax分类器入手来实现多分类问题.在前一章我们对糖尿病模型进行了二分类,二分类问题中 ...

最新文章

  1. Win64 驱动内核编程-17. MINIFILTER(文件保护)
  2. adb 命令 pc端 复制粘贴 文本到android设备
  3. 【Python学习】 - TensorFlow.keras 不显示epochs进度条的方法
  4. 星益云聚合收银台系统
  5. Java .net 心得_我做英文站的心得-如何做好英文站 - 程序员日记 - 做人做技术【关注.NET和JAVA】...
  6. 如何分辨高仿和原装VGA线(图文教程)_对比赛打分进行现场硬件连线产品参考_[评委计分系统-双屏版]使用参考
  7. ora01017 linux,ORA-01017: invalid username/password; logon denied 解决办法
  8. 电子签章引入jar包
  9. 极通EWEBS远程接入软件
  10. iOS应用审核 - Phased Release for Automatic Updates (阶段性自动更新发布)
  11. android获取wifi的SSID
  12. python入门随机生成验证码并验证是否正确
  13. 福特汉姆计算机专业,福特汉姆大学计算机
  14. 准备离职第1天:java集合复习整理
  15. 《实践论》笔记及当下反思(一)
  16. 免费全平台直播推流软件OBS Studio应用
  17. RISC-V指令系统
  18. 嵌入式块设备内核驱动
  19. 在css中引用特殊字体
  20. java修图sdk_脑洞大开!Adobe等新研究把「自拍」变「他拍」,魔幻修图效果感人...

热门文章

  1. jmail反馈是否发送成功_如何在钉钉上自动发送定制消息或通知给同事?(10行代码搞定)...
  2. 【c语言】蓝桥杯基础练习 回文数
  3. c语言表达逻辑量的方法,c语言中用什么表示逻辑量为真
  4. python银行开户_Python数据挖掘与Stata应用实证寒假工作坊
  5. Anaconda 2019.03 发布,Python 跨平台科学计算软件
  6. AOSuite V2.7 发布,JavaEE快速开发平台
  7. 解决 Windows instance 时间不同步问题 - 每天5分钟玩转 OpenStack(153)
  8. 什么时候会执行viewDidLoad方法
  9. javascript间接实现前端非获取匹配,保留带某前缀的子串不执行替换
  10. 史上最伟大的五位计算机罪犯