expand(*sizes)把原tensor扩大到size大小
不一定是按照哪个dim,按照哪个dim得看size里和tensor不相同的dim
eg.
x = torch.tensor([[1], [2], [3]])
x.size()
>>>torch.Size([3, 1])
x.expand(3, 4)#此时做expand,可以发现(3,1)和(3,4)第一个维度是相同的,因此是按第二个维度扩张
>>>tensor([[ 1, 1, 1, 1],
[ 2, 2, 2, 2],
[ 3, 3, 3, 3]])
x = torch.tensor([1, 2, 3])
#x.size=(3,)
y = x.expand(2, 3)#此时做expand,可以发现(3,)和(2, 3)是第二个维度相同,因此按第一个维度扩张
>>>y=tensor([[1, 2, 3],
[1, 2, 3]])
expand_as(other)是按照参数tensor的形状扩张
repeat(*sizes)把原tensor在各个维度上重复多少次
eg.
x = torch.tensor([1, 2, 3])#size=(3,)
x.repeat(4, 2)#第一个维度上重复4次,第二个维度上重复2次
>>>tensor([[ 1, 2, 3, 1, 2, 3],
[ 1, 2, 3, 1, 2, 3],
[ 1, 2, 3, 1, 2, 3],
[ 1, 2, 3, 1, 2, 3]])
注意,size=(3,)其实应该看作为(1, 3),这样更好解释,(1, 3)*(4, 2)=(4, 6)