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基础教程之获取本机ip数据包示例
Feb 10 Python
python抓取网页内容示例分享
Feb 24 Python
Python的Flask开发框架简单上手笔记
Nov 16 Python
python append、extend与insert的区别
Oct 13 Python
pygame游戏之旅 创建游戏窗口界面
Nov 20 Python
Python面向对象之类和对象属性的增删改查操作示例
Dec 14 Python
Flask中endpoint的理解(小结)
Dec 11 Python
Python3 中sorted() 函数的用法
Mar 24 Python
Keras实现支持masking的Flatten层代码
Jun 16 Python
python Autopep8实现按PEP8风格自动排版Python代码
Mar 02 Python
Python基础知识之变量的详解
Apr 14 Python
Python入门之基础语法详解
May 11 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实现的生成静态HTML速度快类库
2007/03/31 PHP
PHP中spl_autoload_register函数的用法总结
2013/11/07 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
laravel 配置路由 api和web定义的路由的区别详解
2019/09/03 PHP
Laravel关系模型指定条件查询方法
2019/10/10 PHP
用jquery实现点击栏目背景色改变
2012/12/10 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
jquery中toggle函数交替使用问题
2015/06/22 Javascript
深入理解jQuery3.0的domManip函数
2016/09/01 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
2017/08/16 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
vue选项卡切换登录方式小案例
2019/09/27 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
2020/07/28 Javascript
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
六个窍门助你提高Python运行效率
2015/06/09 Python
Python实现的自定义多线程多进程类示例
2018/03/23 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
只需7行Python代码玩转微信自动聊天
2019/01/27 Python
python 字典item与iteritems的区别详解
2020/04/25 Python
飞利浦美国官网:Philips美国
2020/02/28 全球购物
小区门卫管理制度
2014/01/29 职场文书
新年抽奖获奖感言
2014/03/02 职场文书
学生上课说话检讨书
2014/10/25 职场文书
2014年幼儿园班级工作总结
2014/12/17 职场文书
校长师德表现自我评价
2015/03/05 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android