1. 一维矩阵的复制操作:
注意这里的每个例子都是环环相扣的,最好不要跳跃查看
1.1 一维复制
x = torch.tensor([0, 4, 8])
y = torch.tensor([0, 4, 8, 12])
x1 = x.repeat(len(y))
print(x1)
print(x1.size())
输出:
tensor([0, 4, 8, 0, 4, 8, 0, 4, 8, 0, 4, 8])
torch.Size([12])
可以看出,当x是一维的时候,他是在列方向上进行了复制。
1.2 二维复制
x2 = x.repeat(2, len(y)) #(2,4)
print(x2)
print(x2.size())
输出:
tensor([[0, 4, 8, 0, 4, 8, 0, 4, 8, 0, 4, 8],
[0, 4, 8, 0, 4, 8, 0, 4, 8, 0, 4, 8]])
torch.Size([2, 12])
可以看出二维复制,就是普通的行列复制,第一个参数为行,第二个参数为列
1.3 三维复制
x3 = x.repeat(2, len(y),1) #(2,4,1)
print(x3)
print(x3.size())
输出:
tensor([[[0, 4, 8],
[0, 4, 8],
[0, 4, 8],
[0, 4, 8]],
[[0, 4, 8],
[0, 4, 8],
[0, 4, 8],
[0, 4, 8]]])
torch.Size([2, 4, 3])
可以看出三维复制是从最后一个数字开始的,先是1,原数据不变,还是[0,4,8],也就是维度不变;然后是4,在行方向开始复制,复制了4行变成了[[0, 4, 8], [0, 4, 8], [0, 4, 8], [0, 4, 8]],即形状变成了[2,4];最后是2,在最前面添加一个维度,变成了[2,4,3]就是我们的输出结果。
我们进一步再看下下面的例子,将最后一个重复数字由1变