我使用的是torch.tensor.rerepeat((
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
period = x.size(1)
repeats = [1,2]
result = x.repeat(*repeats)
结果是
tensor([[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6]])
如果我得到如下的结果
result = x.repeat(repeats)
结果是相同的
tensor([[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6]])
CCD_ 1和CCD_。
这是否意味着,对于输入参数,例如Y
,我可以使用Y
或*Y
Kinda。如果repeats
是ints
的(list
或tuple
(,则它是等价的。但总的来说,规则似乎是:
- 如果第一个参数是
x.repeat(repeats)
0或tuple
,则将其作为repeats
。忽略所有其他参数 - 否则,将完整的
*args
作为repeats
因此,如果您的repeats
与repeats=((1,2),(3,4))
类似,那么a.repeat(*repeats)
成功,与a.repeat(1, 2)==a.repeat((1, 2))
和a.repeat(repeats)
失败相同。
注:这是基于我自己测试的观察结果。唯一的官方文档是函数的定义类型,例如x.repeat(*repeats)
0,它在语义方面并不完全清楚。
您也可以得到这样的错误消息:
TypeError: repeat(): argument 'repeats' (position 1) must be tuple of ints, not tuple
当你通过浮子时。一般来说,错误报告可能会更好。