torch.Tensor.repeat(*sizes)
在张量的某个维度上复制
#创建一个二维张量
x = torch.randn((2,3)) #torch.Size([2, 3])
#在x的两个维度上分别重复4次,2次,即得目标维度:4x2=8, 2x3=6,即(8,6)
x= x.repeat(4, 2) #torch.Size([8, 6])
例如:
#创建一个二维张量
t1 = torch.randn((1,2)) #torch.Size([1, 2])
#维度为2,小于repeat参数数量3,则结果大小:(3,1x5, 2x6)
t2 = t1.repeat(3,5,6) #torch.Size([3, 5, 12])
再如:
#创建一个三维张量
t1 = torch.randn((2,2,3)) #torch.Size([2, 2, 3])
#目标大小(3, 2x4, 2x5, 3x6)
t2 = t1.repeat(3,4,5,6)#torch.Size([3, 8, 10, 18])
repeat类似于平铺操作 tile,repeat参数指定了在每个维度(dimention)上平铺(tile)的次数,如果张量维度 < repeat参数数量,则添加新的维度。如上例所示。
torch.cat(tensors, dim=0, out=None) → Tensor
在指定的维度(dim)上,将张量连接
>>> x = torch.randn(2, 3)
>>> x
tensor([[ 0.6580, -1.0969, -0.4614],
[-0.1034, -0.5790, 0.1497]])
>>> torch.cat((x, x, x), 0)
tensor([[ 0.6580, -1.0969, -0.4614],
[-0.1034, -0.5790, 0.1497],
[ 0.6580, -1.0969, -0.4614],
[-0.1034, -0.5790, 0.1497],
[ 0.6580, -1.0969, -0.4614],
[-0.1034, -0.5790, 0.1497]])
>>> torch.cat((x, x, x), 1)
tensor([[ 0.6580, -1.0969, -0.4614, 0.6580, -1.0969, -0.4614, 0.6580,
-1.0969, -0.4614],
[-0.1034, -0.5790, 0.1497, -0.1034, -0.5790, 0.1497, -0.1034,
-0.5790, 0.1497]])
torch.squeeze(input, dim=None, out=None) → Tensor
将张量中所有元素数量为1的维度都去掉
torch.unsqueeze(input, dim, out=None) → Tensor
inplace version: unsqueeze_(dim) → Tensor
为张量添加一个维度
>>> x = torch.zeros(2, 1, 2, 1, 2)
>>> x.size()
torch.Size([2, 1, 2, 1, 2])
>>> y = torch.squeeze(x)
>>> y.size()
torch.Size([2, 2, 2])
>>> y = torch.squeeze(x, 0)
>>> y.size()
torch.Size([2, 1, 2, 1, 2])
>>> y = torch.squeeze(x, 1)
>>> y.size()
torch.Size([2, 2, 1, 2])
>>> x = torch.tensor([1, 2, 3, 4])
>>> torch.unsqueeze(x, 0)
tensor([[ 1, 2, 3, 4]])
>>> torch.unsqueeze(x, 1)
tensor([[ 1],
[ 2],
[ 3],
[ 4]])
torch.Tensor.view(*args) → Tensor
返回一个有相同数据但是不同形状的新的向量。
返回的装两必须与原张量有相同的数据和相同的元素个数,但是可以有不同的尺寸。
参数:
args (torch.Size or int…) - 理想的指定尺寸
x = torch.randn(4, 4)
x.size()
torch.Size([4, 4])
y = x.view(16)
y.size()
torch.Size([16])
torch.Tensor.permute(*dims)
将执行本方法的张量的维度换位。
参数:
dim (int) - 指定换位顺序
例子:
x = torch.randn(2, 3, 1) #torch.Size([2, 3, 1])
tensor([[[-0.8959],
[-0.5030],
[ 1.1197]],
[[-0.5571],
[-1.4857],
[ 0.5387]]])
x = x.permute(2, 0, 1)torch.Size([1, 2, 3])
tensor([[[-0.8959, -0.5030, 1.1197],
[-0.5571, -1.4857, 0.5387]]])