如何理解 torch.arange(0, 3).view(-1, *[1]*3)

How to understand torch.arange(0, 3).view(-1, *[1]*3)

在 Pytorch 中,对于代码:

torch.arange(0, 3).view(-1, *[1]*3)

结果是:

tensor([[[[0]]],


    [[[1]]],


    [[[2]]]])


    torch.Size([3, 1, 1, 1])

其中[1] * 3 = [1, 1, 1],但是我不明白[1] * 3前面的*是什么意思?谢谢

虽然评论中提供的链接描述了解决方案的一部分,但可能缺少全部内容,因此,让我们理清这个 view 方法:

.view(-1,...)

表示“所有元素”,在你的例子中它是 3,因为你有 [0, 1, 2],长度为 3。

下一个:

[1] * 3

是一个 Python 技巧,可以创建单个元素重复多次的新列表。

相同
[1, 1, 1]

现在用星号解包将值作为函数的参数“解包”,在这种情况下:

.view(-1, [1, 1, 1])

变为:

.view(-1, 1, 1, 1)

整个事情是(根据第一步):

.view(3, 1, 1, 1)

顺便说一句。请不要在大多数情况下这样做,如上所示,很难遵循。