torch.Tensor下常用的函数

(1)torch.Tensor.permute (重新排列维度-不能改变维度)

(2)torch.Tensor.view(按照原维度-改变维度)


(1)torch.Tensor.permute 

官网:https://pytorch.org/docs/stable/tensors.html#torch.Tensor.permute

torch.Tensor.permute 重新排列tensor中的维度。tensor.(1,2,0) 其中1,2,0是tensor结构对应的维度。

>>> x = torch.randn(2, 3, 5)
>>> x.size()
torch.Size([2, 3, 5])
>>> x.permute(2, 0, 1).size() ####维度转换(0,1,2)->(2,0,1)
torch.Size([5, 2, 3])

(2)torch.Tensor.view

官网:https://pytorch.org/docs/stable/tensors.html#torch.Tensor.view

torch.Tensor.view 按照原来tensor结构和现在想要的结构,重新组织tensor中的数字,形成新的大小。

import torch
a = torch.rand(3,4,6)
print(a.view(3,-1,8).size())

output:
torch.Size([3, 3, 8])

本质:就是将3*4*6个数字,按照view()中指定的大小,从新排列,排列的过程就是tensor中的从左到右,从上到下。如果指定中出现“-1”,那么就是将其他维度排好后再排列这个维度。

import torch
a = torch.rand(2,3,4,6)
print(a.transpose(1,2).size())
print(a.view(2,4,3,6).size())
print(torch.equal(a.transpose(1,2),a.view(2,4,3,6)))

output:
torch.Size([2, 4, 3, 6])
torch.Size([2, 4, 3, 6])
False

官方还给出了上面例子,来说明view()函数,可以看出虽然维度相同,但是判断的时候两者并不相同。这是因为在transpose()的时候将dim=1和2的数据进行了转置(调换)(没有破坏原维度上的数据),但是view()中是以a中的数据为基础,将2*3*4*6个数据从新按照2,4,3,6的结构重新排列,里面的数据并不是维度上的转置(破坏了原来的维度,从新排)。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Foneone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值