gpt4 book ai didi

python-3.x - Y 和 *Y 之间有什么区别吗,其中 Y 是用作输入参数的列表?

转载 作者:行者123 更新时间:2023-12-04 17:17:24 31 4
gpt4 key购买 nike

我正在使用 torch.tensor.repeat()

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]])

似乎 x.repeat(repeats)x.repeat(*repeats) 工作相同。

这是否意味着,对于输入参数,例如 Y,我可以使用 Y*Y

最佳答案

有点。如果 repeatsints 的(listtuple),那么它是等价的。但总的来说,规则似乎是:

  • 如果第一个参数是列表元组,则将其视为重复。忽略所有其他参数。
  • 否则,将完整的*args作为repeats

因此,如果您的repeats 很奇怪,例如repeats=((1,2),(3,4)),那么a.repeat(* repeats) 成功并且与 a.repeat(1, 2)==a.repeat((1, 2))a.repeat(repeats) 失败。

注意:这是基于我自己的测试的观察结果。唯一的官方文档是函数的定义类型,例如repeat(torch.Size or int...) 这在语义方面并不完全清楚。


您还可以得到这样的错误信息:

TypeError: repeat(): argument 'repeats' (position 1) must be tuple of ints, not tuple

当你传递花车时。一般来说,错误报告可能会更好。

关于python-3.x - Y 和 *Y 之间有什么区别吗,其中 Y 是用作输入参数的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68387274/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com