• transpose、contiguous、view
a = torch.randn(2,3) #随机产生的2*3的tensor,内存是连续的,所以打印出“真”
if a.is_contiguous():print("真")
else:print("假")
a = a.transpose(0,1)#经过transpose,维度变换后,内存不连续了,所以打印出“假”
if a.is_contiguous():print("真")
else:print("假")
a = a.contiguous()#contiguous函数将不连续内存变为连续内存,所以打印出“真”
if a.is_contiguous():print("真")
else:print("假")
a = a.view(1,6)#变换维度,但是内存依然连续,所以打印出“真“,view遇到不连续的会报错,只有连续的才不会报错
if a.is_contiguous():print("真")
else:print("假")

结果:

其中:is_contiguous函数是判断一个变量是否内存连续,连续返回True,不连续返回False


  • torch.reshape()
a = torch.randn(2,3) #随机产生的2*3的tensor,内存是连续的,所以打印出“真”
if a.is_contiguous():print("真")
else:print("假")
a = a.transpose(0,1)#经过transpose,维度变换后,内存不连续了,所以打印出“假”
if a.is_contiguous():print("真")
else:print("假")
a = torch.reshape(a,(1,6))#reshape相当于将contiguous和view进行了合并,无论之前是连续还是不连续,最终都是连续的,且不会报错
if a.is_contiguous():print("真")
else:print("假")

结果:


  • 查看变量的内存地址:id()函数
a = torch.randn(2,3)
print(id(a))

结果:


transpose、permute异同点

transpose:交换维度

torch.manual_seed(1)
a = torch.randn(2, 3)
print(a)
b = a.transpose(0, 1)
print(b)
print('=====================')
a1 = torch.randn(2, 3, 4)
print(a1)
b1 = a1.transpose(1, 2)
print(b1)

结果:

permute:排列、置换维度,比transpose更灵活,适用于多维度

a1 = torch.from_numpy(np.array([[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[1, 2, 3], [4, 5, 6], [7, 8, 9]]]))
print(a1)
b1 = a1.permute(1, 0, 2)  # 原本是2*3*3,将第1维和第2维交换,结果变为3*2*3
print(b1)
c1 = a1.permute(1, 2, 0)  # 原本是2*3*3,第1维变为第3维,第2维变为第1维,第3维变为第2维,结果是:3*3*2
print(c1)

结果:

虽然都是维度变化,但transpose只能选择两个维度进行交换,permute则可以多维交换。

看函数原型也能看出:

def transpose(self, dim0: _int, dim1: _int) -> Tensor: ...
def permute(self, dims: _size) -> Tensor: ...

pytorch | transpose、permute、view、contiguous、is_contiguous、reshape相关推荐

  1. 【PyTorch】contiguous==>保证Tensor是连续的,通常transpose、permute 操作后执行 view需要此方法

    目录 PyTorch中的is_contiguous是什么含义? 行优先 为什么需要 contiguous ? contiguous 本身是形容词,表示连续的,关于 contiguous, PyTorc ...

  2. Pytorch中改变形状和交换维度详解:view()、reshape()、transpose()、permute()以及contiguous()

    文章目录 view()和reshape() transpose()和permute() contiguous 以后操作基于下述tensor. import torch a=torch.rand(2,2 ...

  3. PyTorch中contiguous、view、Sequential、permute函数的用法

    在pytorch中,tensor的实际数据以一维数组(storage)的形式存储于某个连续的内存中,以"行优先"进行存储. 1. tensor的连续性 tensor连续(conti ...

  4. 深度学习之Pytorch中的flatten()、transpose()和permute()

    1.flatten():压缩维度 input_tensor.flatten(start_dim, end_dim),其中 input_tensor 就是输入的你想压缩的 tensor,start_di ...

  5. android 如何获得activity的view对象,Android的Activity 、 Window 、 View之间的关系

    什么是Activity .View . Window? Activity:是Android 四大组件之一, 是存放View对象的容器,也是我们界面的载体,可以用来展示一个界面.它有一个SetConte ...

  6. R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、设置transpose参数转置三线表、变量作为列,子组(strata)作为行

    R语言使用table1包绘制(生成)三线表.使用单变量分列构建三线表.设置transpose参数转置三线表.变量作为列,子组(strata)作为行 目录

  7. Ember——在构建Ember应用程序时,我们会使用到六个主要部件:应用程序(Application)、模型(Model)、视图(View)、模板(Template)、路由(...

    在构建Ember应用程序时,我们会使用到六个主要部件: 模板(Template).应用程序(Application).视图(View).路由(Routing).控制器(Controller)和模型(M ...

  8. Pytorch:深度学习中pytorch/torchvision版本和CUDA版本最正确版本匹配、对应版本安装之详细攻略

    Pytorch:深度学习中pytorch/torchvision版本和CUDA版本最正确版本匹配.对应版本安装之详细攻略 目录 深度学习中pytorch/torchvision版本和CUDA版本最正确 ...

  9. PyTorch 深度学习模型压缩开源库(含量化、剪枝、轻量化结构、BN融合)

    点击我爱计算机视觉标星,更快获取CVML新技术 本文为52CV群友666dzy666投稿,介绍了他最近开源的PyTorch模型压缩库,该库开源不到20天已经收获 219 颗星,是最近值得关注的模型压缩 ...

最新文章

  1. MATLAB从入门到精通系列之MATLAB维度获取size()函数详解
  2. 【Python】青少年蓝桥杯_每日一题_1.03_输出字符串
  3. java 图片上传非jsp_java问题用java代码在后台如何将jsp页面上的图片上传(是 爱问知识人...
  4. 一个小小指针,竟把Linux内核攻陷了!
  5. 干!一张图整理了 Python 所有内置异常
  6. HttpClientFactory日志不好用,自己扩展一个?
  7. div中iframe高度自适应问题
  8. 消息中间件系列(八):Kafka、RocketMQ、RabbitMQ等的优劣势比较
  9. 千图成像 马赛克拼图 专用软件 圣诞礼物
  10. 国科大-刘莹-数据挖掘-第一次作业后总结-纯干货
  11. 为什么变形兄弟只有四人拿到bilibili百大UP主?【B站数据分析】
  12. 正大市场监管总局、发改委、证监会联合提醒告诫部分铁矿石
  13. python写的百度贴吧邮箱采集(带界面)
  14. 六、品达通用权限系统__pd-tools-log
  15. BlockingQueue(阻塞队列)
  16. 终端怎么退出python命令行
  17. MLAT-Autoencoders for Conditional Risk Factors and Asset Pricing---上篇
  18. Upload-labs
  19. 基于原生开发的全新中文安卓应用开发平台
  20. 【vue】前端根据后端返回的code码查字典表展示文本

热门文章

  1. 百度开平台BAE搭建网站
  2. NOIP2017普及组翻车记
  3. C#(WinForm)上传图片保存到数据库和从数据库读取图片显示到窗体
  4. (原创)speex与wav格式音频文件的互相转换(二)
  5. TYVJ 1557 MST+LCA
  6. 修改RAC VIP IP
  7. Redis.conf常见配置介绍
  8. 致Python学习者,该跟大佬学习做项目了
  9. 批量修改dos文件到unix
  10. jQueryh插件imgareaselect