两种情况
第一种情况
当repeat的维度与原tensor维度相同时,则对应维度数相乘得到最终结果。
例:
#即a的维度为(2,3)
a = ([[1, 2, 3], [4, 5, 6]])
b = a.repeat(2, 2)
print(b.shape) #则b的维度大小为 (4, 6) #(2×2, 2×3) 其实就是把相应维度的元素值分别复制2次。
第二种情况
当repeat的维度与原tensor维度不同时,则先在第0维扩展一个维数为1的维度,然后剩下的维度执行对应维度数相乘,即得到最终结果。
例:
#a形状(2,3)
a = torch.tensor([[1, 2, 3], [4, 5, 6]])
repeat参数比维度多,在扩展前先讲a的形状扩展为(1,2,3)然后复制
b = a.repeat(1, 2, 1)
print(b.shape) # 得到结果torch.Size([1, 4, 3])
参考:https://blog.csdn.net/tequila53/article/details/119183678