1.不增加维度的情况
b=torch.arange(6).view(2,3)
tensor([[0, 1, 2],
[3, 4, 5]])
b=b.repeat(2,3)
tensor([[0, 1, 2, 0, 1, 2, 0, 1, 2],
[3, 4, 5, 3, 4, 5, 3, 4, 5],
[0, 1, 2, 0, 1, 2, 0, 1, 2],
[3, 4, 5, 3, 4, 5, 3, 4, 5]])
- 分析:repeat的参数从右到左,tensor从里到外
- 首先是最里层括号内的内容重复3遍,变成
tensor([[0, 1, 2,0, 1, 2,0, 1, 2],
[3, 4, 5,3, 4, 5,3, 4, 5]])
- 然后第二里层括号内的内容重复2遍,变成
tensor([[0, 1, 2,0, 1, 2,0, 1, 2],
[3, 4, 5,3, 4, 5,3, 4, 5],
[0, 1, 2,0, 1, 2,0, 1, 2],
[3, 4, 5,3, 4, 5,3, 4, 5]])
2.增加维度的情况
a=torch.arange(3)
tensor([0, 1, 2])
a=a.repeat(2,1)
tensor([[0, 1, 2],
[0, 1, 2]])
a=a.repeat(1,2)
tensor([[0, 1, 2, 0, 1, 2]])
- 分析:repeat的参数从右到左,tensor从里到外
- 首先是最里层括号内的内容重复1遍,也就是不变
- 然后在最外面加一层括号,变成
tensor([[0, 1, 2]])
第二里层括号内的内容重复2遍,变成tensor([[0, 1, 2],
[0, 1, 2]])
a.repeat(1,2)
读者自己分析一下
3.如果2中的情况想要[0,0,0…1,1,1…2,2,2…]的结果呢
a=torch.arange(3)
tensor([0, 1, 2])
a=a.view(3,1)
tensor([[0],
[1],
[2]])
a=a.repeat(1,5)
tensor([[0, 0, 0, 0, 0],
[1, 1, 1, 1, 1],
[2, 2, 2, 2, 2]])
a=a.repeat(3,1)
tensor([[0, 0, 0, 0, 0],
[1, 1, 1, 1, 1],
[2, 2, 2, 2, 2],
[0, 0, 0, 0, 0],
[1, 1, 1, 1, 1],
[2, 2, 2, 2, 2],
[0, 0, 0, 0, 0],
[1, 1, 1, 1, 1],
[2, 2, 2, 2, 2]])
4.留着补充新的情况