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 相关文章推荐
Django实现图片文字同时提交的方法
May 26 Python
Python变量作用范围实例分析
Jul 07 Python
在Django的模型中添加自定义方法的示例
Jul 21 Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
Jun 18 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
python word转pdf代码实例
Aug 16 Python
python 字符串常用函数详解
Sep 11 Python
Pytorch 实现sobel算子的卷积操作详解
Jan 10 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
Jul 01 Python
win10+anaconda安装yolov5的方法及问题解决方案
Apr 29 Python
python Tkinter模块使用方法详解
Apr 07 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 array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
php session安全问题分析
2011/06/24 PHP
php array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
用JavaScript调用WebService的示例
2008/04/07 Javascript
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
JavaScript 类似flash效果的立体图片浏览器
2010/02/08 Javascript
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
2014/04/14 Javascript
extjs 时间范围选择自动判断的实现代码
2014/06/24 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
2015/06/19 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
2015/08/24 Javascript
JS实现漂亮的时间选择框效果
2016/08/20 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
详解vue 实例方法和数据
2017/10/23 Javascript
React中使用外部样式的3种方式(小结)
2019/05/28 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
2019/09/11 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
2020/07/23 Javascript
Vue如何循环提取对象数组中的值
2020/11/18 Vue.js
Python中单、双下划线的区别总结
2017/12/01 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
2018/02/18 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
Django xadmin安装及使用详解
2020/10/26 Python
岗位职责定义及内容
2013/11/08 职场文书
冬季安全检查方案
2014/05/23 职场文书
消防宣传口号
2014/06/16 职场文书
在校实习生求职信
2014/06/18 职场文书
后勤个人工作总结
2015/02/28 职场文书
死者家属慰问信
2015/03/24 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
创业计划书之餐饮
2019/09/02 职场文书
解决Go gorm踩过的坑
2021/04/30 Golang