view
tensor.view()方法可以调整tensor的形状,但必须保证调整前后元素总数一致。view不会修改自身的数据,返回的新tensor与原tensor共享内存,即更改一个,另一个也随之改变。
import torch as t
a=t.arange(0,6).view(2,3)
print(a)
b=a.view(-1,2) #当某一维是-1时,会自动计算它的大小
print(b)
#输出
tensor([[0, 1, 2],
[3, 4, 5]])
tensor([[0, 1],
[2, 3],
[4, 5]])
unsequeeze()和sequeeze()
unsequeeze(dim)用来在维度dim上增加1维;sequeeze(dim)用来在dim上减少维度。
import torch as t
a=t.arange(0,6).view(2,3)
print(a)
b=a.view(-1,2) #当某一维是-1时,会自动计算它的大小
print(b)
c=b.unsqueeze(1) #在第1维上,增加1
print(c.size())
d=c.squeeze(-2) #在倒数第二维上,减少1维
print(d.size())
#输出
tensor([[0, 1, 2],
[3, 4, 5]])
tensor([[0, 1],
[2, 3],
[4, 5]])
torch.Size([3, 1, 2])
torch.Size([3, 2])
resize()
resize是另一种可用来调整size的方法,但与view不同,它可以修改tensor的尺寸。如果新尺寸超过了原尺寸,会自动分配新的内存空间,而如果新尺寸小于原尺寸,则之前的数据依旧会被保存下来。
import torch as t
a=t.arange(0,6).view(2,3)
print(a)
b=a.resize_(1,3)
print(b)
c=b.resize_(3,3)
print(c)
#结果
tensor([[0, 1, 2],
[3, 4, 5]])
tensor([[0, 1, 2]])
tensor([[ 0, 1, 2],
[ 3, 4, 5],
[ 0, 15, 3184145383629680499]])
最后一行是随机填充的数据。
来自
https://blog.csdn.net/weixin_38664232/article/details/104539351
[文章导入自 http://qzq-go.notion.site/18749a7b4e7580628f80e6014ccbdc72 访问原文获取高清图片]