Pytorch如何像for循环一样堆叠张量

roo*_*tit 3 python pytorch

我想连接在 for 循环中生成的张量,并获得 2dTensor。
标准python,如下所示。

li = []
for i in range(0, len(items)):
    # calc something
    li.append(calc_result)
Run Code Online (Sandbox Code Playgroud)

就我而言,在 for 循环中,生成torch.Size([768])Tensor,我想获得torch.Size([len(item),768])Tensor。
这该怎么做?

iac*_*ppo 9

您可以使用torch.stack

torch.stack(li, dim=0)
Run Code Online (Sandbox Code Playgroud)

在 for 循环之后会给你一个torch.Tensor那个大小。

注意,如果事先知道最终张量的大小,可以事先分配一个空张量,填入for循环中:

x = torch.empty(size=(len(items), 768))
for i in range(len(items)):
    x[i] = calc_result
Run Code Online (Sandbox Code Playgroud)

这通常比执行堆栈更快。