pytorch查看通道数 维数 尺寸大小方式


Posted in Python onMay 26, 2020

查看tensor

x.shape # 尺寸
x.size() # 形状
x.ndim # 维数

例如

import torch
parser = argparse.ArgumentParser(description='PyTorch')
parser.add_argument('--img_w', default=144, type=int, metavar='imgw', help='img width')
parser.add_argument('--img_h', default=288, type=int, metavar='imgh', help='img height')
parser.add_argument('--batch-size', default=32, type=int,metavar='B', help='training batch size')
parser.add_argument('--test-batch', default=64, type=int, metavar='tb', help='testing batch size')
 
class net(nn.Module):
 def __init__(self, arch='resnet18'):
 super(net, self).__init__()
 model_ft = models.resnet50(pretrained=True)
 self.visible = model_ft
 
 def forward(self, x):
 print(x.shape)
 print(x.size())
 print(x.ndim)
 
 input = self.visible.conv1(x)
 
 print(input.shape)
 print(input.size())
 print(input.ndim)

pytorch查看通道数 维数 尺寸大小方式

从左至右起,32表示训练集batch_size大小,3是图像通道数,288是图像高度,144是图像宽度,图像尺寸 288*144,维度个数是4。很多博客在介绍论文时候,没有准确表达这些参数名称,往往出现张冠李戴,导致读者后续使用过程中被老师ma

经过标准resnet50第一层卷积后,结果是:32表示训练集batch_size大小,64是图像通道数,72是图像高度,36是图像宽度,图像尺寸72*36,维数是4

补充知识:pytorch中与维度/变换相关的几个函数

torch.size ()

先说torch.size()函数,因为后面的方法都会用这个方法看到变换后的矩阵的维度

通过该方法,可以查看当前Tensor的维度,用法也很简单:

>>>import torch
>>>a = torch.Tensor([[[1, 2, 3], [4, 5, 6]]])
>>>a.size()
torch.Size([1, 2, 3])

torch.view()

官方文档中的解释:

pytorch查看通道数 维数 尺寸大小方式

简单说,把原本的tensor尺寸,转变为你想要的尺寸,例如原尺寸为23,现在可以转为32或16等,但一定要保证等式成立,不能目标尺寸为33

此外,也可以设其中一个尺寸为-1,表示机器内部自己计算,但同时只能有一个为-1,用法如下:

>>> b=a.view(-1, 3, 2)
>>> b
tensor([[[1., 2.],
  [3., 4.],
  [5., 6.]]])
>>> b.size()
torch.Size([1, 3, 2])

torch.squeeze() / torch.unsqueeze()

torch.squeeze(n)函数表示压缩tensor中第n维为1的维数,比如下面第一个,b.squeeze(2).size(),原始的b为上面的torch.Size([1, 3, 2]),第二维是2≠1,所以不压缩,尺寸保持不变;而若b.squeeze(0).size(),则发现第一维为1,因此压缩为3x2的tensor

>>> b.squeeze(2).size()
torch.Size([1, 3, 2])
>>> b.squeeze(0).size()
torch.Size([3, 2])

相反的,torch.unsqueeze(n)则是在第n维增加一个维数=1,如下,表示在原始的b的第二维增加一维,则尺寸变为1 * 3 * 1 * 2

>>> b.unsqueeze(2).size()
torch.Size([1, 3, 1, 2])
>>> b.unsqueeze(2)
tensor([[[[1., 2.]],

  [[3., 4.]],

  [[5., 6.]]]])

torch.permute()

这个函数表示,将原始的tensor,按照自己期望的位置重新排序,例如原始tensor的第0、1、2维分别是1、3、2,那么当我执行permute(2, 0, 1),则将第三维放在最前,第一维放在中间,第二维放在最后,也就变成了2 * 1 * 3,注意这里表示的维数的index,而不是具体几维:

>>> b.permute(2, 0, 1).size()
torch.Size([2, 1, 3])
>>> b.permute(2, 0, 1)
tensor([[[1., 3., 5.]],

 [[2., 4., 6.]]])

暂时只想到这些,若有错误还请指正,或有其他相关函数,我也将持续更新。

以上这篇pytorch查看通道数 维数 尺寸大小方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之玩转字符串(2)更新篇
Sep 28 Python
Python开发之快速搭建自动回复微信公众号功能
Apr 22 Python
基于python中pygame模块的Linux下安装过程(详解)
Nov 09 Python
Python反射的用法实例分析
Feb 11 Python
在IPython中执行Python程序文件的示例
Nov 01 Python
Python List cmp()知识点总结
Feb 18 Python
Python实现的旋转数组功能算法示例
Feb 23 Python
用python求一个数组的和与平均值的实现方法
Jun 29 Python
Python企业编码生成系统之主程序模块设计详解
Jul 26 Python
Python中list循环遍历删除数据的正确方法
Sep 02 Python
Python帮你微信头像任意添加装饰别再@微信官方了
Sep 25 Python
Python如何实现FTP功能
May 28 Python
Pytorch 使用 nii数据做输入数据的操作
May 26 #Python
python变量的作用域是什么
May 26 #Python
Python3 pywin32模块安装的详细步骤
May 26 #Python
什么是python的列表推导式
May 26 #Python
python中列表的含义及用法
May 26 #Python
初学者学习Python好还是Java好
May 26 #Python
python函数map()和partial()的知识点总结
May 26 #Python
You might like
优化PHP程序的方法小结
2012/02/23 PHP
php二维码生成
2015/10/19 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
JavaScript执行顺序详细介绍
2013/12/04 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
Javascript中的apply()方法浅析
2015/03/15 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
详解JavaScript节流函数中的Throttle
2016/07/16 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
JS基于面向对象实现的拖拽功能示例
2016/12/20 Javascript
Vue指令的钩子函数使用方法
2017/03/20 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
jQuery实现滚动效果
2017/11/17 jQuery
vue src动态加载请求获取图片的方法
2018/10/17 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
JS数组扁平化(flat)方法总结详解
2019/06/24 Javascript
JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转
2019/11/25 Javascript
JS简单表单验证功能完整示例
2020/01/26 Javascript
vue单文件组件无法获取$refs的问题
2020/06/24 Javascript
vue 在单页面应用里使用二级套嵌路由
2020/12/19 Vue.js
[34:47]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第一场 11.18
2020/11/18 DOTA
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
python实现多线程网页下载器
2018/04/15 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
python圣诞树编写实例详解
2020/02/13 Python
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
照片礼物和装饰:MyPhoto
2019/11/02 全球购物
英国第一职业高尔夫商店:Clickgolf.co.uk
2020/11/18 全球购物
C#如何判断当前用户是否输入某个域
2015/12/07 面试题
项目专员岗位职责
2013/12/04 职场文书
《夏夜多美》教学反思
2014/02/17 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
幼儿园教师求职信
2015/03/20 职场文书
mongoDB数据库索引快速入门指南
2022/03/23 MongoDB
Python中request的基本使用解决乱码问题
2022/04/12 Python