维度转换

改变维度view

view 可以改变维度,合并拆分都可

#创建tensor变量
a=torch.rand(4,1,28,28)#4张图,1灰度图片,图片大小28*28
a.shape
#torch.Size([4, 1, 28, 28])#将后面三个维度合并在一起,1*28*28
a.view(4,28*28).shape
#torch.Size([4, 784])#前3个维度合并在一起
a.view(4*1*28,28).shape
#out:torch.Size([112, 28])b=a.view(4,784)
b.view(4,28,28,1).shape#1维转4维,但此转变没有物理意义
#out:torch.Size([4, 28, 28, 1])

squeeze/unsqueeze

增加维度unsqueeze

#创建tensor变量
a=torch.rand(4,1,28,28)#4张图,1灰度图片,图片大小28*28#在0的位置插入一个维度
a.unsqueeze(0).shape#0之前插入
#out:torch.Size([1, 4, 1, 28, 28])a.unsqueeze(-1).shape#-1之后插入
#out:torch.Size([4, 1, 28, 28, 1])

删减维度squeeze

b=torch.rand(1,32,1,1)#32个channel,每个Chanel上有一个点b.squeeze().shape#挤压维度维1的
#out:torch.Size([32])b.squeeze(0).shape#删减第一位
#out:torch.Size([32, 1, 1])b.squeeze(-1).shape#删减倒数第一位
#out:torch.Size([1, 32, 1])

expand/repeat

expand()函数可以将张量广播到新的形状,但是切记以下两点:

  1. 只能对维度值为1的维度进行扩展,且扩展的Tensor不会分配新的内存,只是原来的基础上创建新的视图并返回;
  2. 无需扩展的维度请保持维度值不变。
a=torch.rand(1,32,14,14)
a.expand(4,32,14,14).shape#expand维度与之前一致,
#out:torch.Size([4, 32, 14, 14])a.expand(4,32,-1,-1).shape#-1代表保持原来的维度不变
#out:torch.Size([4, 32, 14, 14])

repeat(),这个函数如函数名一样,是复制函数,参数表示把这个tensor复制成多少个,参数以1,2,3位来解释:

b=torch.rand(1,32,1,1)
a.repeat(4,1,1,1).shape#数字代表重复的字数
b.repeat(4,1,32,32).shape#重复4次,保持不变,重复32,。。32

转置操作

a=torch.randn(3,4)
a.t().shape

transpose维度交换

torch.transpose(Tensor, a,b):transpose只能操作2D矩阵的转置

a=torch.rand([4,3,32,32])#transpose(1,3),代表交换的维度,1和3维度。
a1=a.transpose(1,3).view(4,3*32*32).view(4,3,32,32)
#[abcd]变成[adcb]在变成[abdc]
#注意数据不可用view随意变换a2=a.transpose(1,3).contiguous().view(4,3*32*32).view(4,32,32,3).transpose(1,3)
#[abcd]-[adcb]-[abcd]#比较a和a1,会发现
torch.all(torch.eq(a,a1))
#Falsetorch.all(torch.eq(a,a2))
#True

permute

Tensor.permute(a,b,c,d, …):permute函数可以对任意高维矩阵进行转置,但没有 torch.permute() 这个调用方式, 只能 Tensor.permute():

a=torch.rand(4,3,28,28)
a.transpose(1,3).shapeb=torch.rand(4,3,28,32)
b.transpose(1,3).shape#所有维度可以随意变换
b.permute(0,2,3,1).shape
#torch.Size([4, 28, 32, 3])

tensor之维度转换相关推荐

  1. tensor 增加维度_tensor维度变换

    维度变换是tensorflow中的重要模块之一,前面mnist实战模块我们使用了图片数据的压平操作,它就是维度变换的应用之一. 在详解维度变换的方法之前,这里先介绍一下View(视图)的概念.所谓Vi ...

  2. keras维度转换问题

    一般如果只涉及卷积和全连接不需要考虑维度转换的问题,但是当使用inception模块,或者使用RNN和CNN结合的时候需要考虑维度转换的问题. 1.在keras中使用layers.Reshape函数, ...

  3. pytorch permute维度转换

    permute prediction = input.view(bs, self.num_anchors,                                 self.bbox_attr ...

  4. opencv mat 修改_C++ opencv矩阵和pytorch tensor的互相转换

    矩阵和tensor相互转换 cvmat到tensor tips:这里主要要注意的就是在opencv和pytorch中存储顺序的差异 cv::cvtColor(frame, frame, CV_BGR2 ...

  5. python numpy array 数组维度转换(转维)

    在实践中,经常需要对中间数据或输出数据进行维度转换,保证多个数据间计算维度上的一致性. 一般主要涉及pytorch中tensorde的维度转换.numpy中array的维度转换.本篇先对array的维 ...

  6. C#数组维度转换:一维数组二维数组三维数组相互转换

    最近项目需要用到数组维度转换,网上资源较少,写一个分享与备用 1.一维数组转二维数组 /// <summary> /// 一维数组转2维数组(矩阵) /// </summary> ...

  7. 基于数据仓库和维度转换技术的广东电信公话IC话机话务动态分析系统

    本文发表于期刊<天津通信技术>2003年4期. 基于数据仓库和维度转换技术的广东电信公话IC话机话务动态分析系统 马根峰 (广东电信公用电话管理中心 广州 510635) 摘要   在电信 ...

  8. PyTorch 安装和基本运算— Tensor 的数据类型(浮点型、整型、随机浮点型等)、基本运算(绝对值、求和、裁剪、求商、求积、求幂等)、Tensor 与 Numpy 转换

    PyTorch 的安装可以到官网 https://pytorch.org/,选择适合自己机器以及安装方式,执行对应的命令即可. 除了安装 PyTorch 之外,建议也安装 torchvision 包. ...

  9. Python中Numpy(2,numpy的基本操作(级联,维度转换,切分,副本))

    1. ndarray的基本操作 # 1.索引与切片 和列表的是一个道理 n2 = np.arange(0,10,1) print(n2) print(n2[::-1]) #反转 print(n2[:: ...

最新文章

  1. 模型融合方法最全总结!
  2. python主要运用于-python主要应用领域有哪些?看这一篇就够了
  3. 九大技巧教你快速提升移动应用登陆转化率
  4. NYOJ 660 逃离地球
  5. 用户 'sa' 登录失败。 (Microsoft SQL Server,错误: 18456)
  6. 十分钟入门RocketMQ
  7. SecureCRTPortable - 破解
  8. RPM 软件包命名规范
  9. QPW 点评阅读日志表(tf_appraise_read_log)
  10. 6-1 健壮性与正确性
  11. mysql 内存性能优化
  12. 一衣带水 守望相助:中日夫妻七七再行慈善之旅
  13. 微生物组-扩增子16S分析第10期(报名直播课免费参加线下2020.10)
  14. 简单高效的图片降噪方法
  15. 安卓bmi项目_bmi计算器
  16. MIDle生命周期详解,以及工作原理
  17. 为什么苹果电脑qq无法远程连接服务器,qq远程控制连接不上怎么回事(图示其原因和解决方案)...
  18. 判断南红价值,“红“的等级是关键
  19. error C2338: /RTCc rejects conformant code错误解决
  20. HCIP考试心得,题库整理

热门文章

  1. 一个简单的acm竞赛题
  2. 【论文阅读】Stroke Controllable Fast Style Transfer with Adaptive Receptive Fields
  3. word分页符的删除
  4. python标准库不需要导入即可使用其中的所有对象和方法_2021智慧树网课答案创业基础考试期末答案...
  5. 前端性能优化--测试工具
  6. Bryntum Gantt 5.2.2 New-Crack
  7. 使用网络模拟器 Packet Tracer和交换机的端口配置与管理及Telnet远程登陆配置
  8. 读《张一鸣:我的大学四年收获及工作感悟》有感
  9. oracle组合单词是什么意思,oracle-bone是什么意思
  10. RSAT(Regulatory Sequence Analysis Tools)详解