使用pytorch将列表中的项目(Tensor)替换为另一Tensor,但形状不同

pjngdqdw  于 2023-01-05  发布在  其他
关注(0)|答案(2)|浏览(287)

我有Tensor的列表

t_list=[tensor([[1],
         [1],
         [1]]),
 tensor([[1],
         [1],
         [1]]),
 tensor([[1],
         [1],
         [1]])]

想把它转换成

[tensor([[1,0,0],
         [1,0,0],
         [1,0,0]]),
 tensor([[1,0,0],
         [1,0,0],
         [1,0,0]]),
 tensor([[1,0,0],
         [1,0,0],
         [1,0,0]])]

我试过这个密码

import torch
z= torch.zeros(1,2)
for i, item in enumerate(t_list):
    for ii, item2 in enumerate(item):
        unsqueezed = torch.unsqueeze(item2,0)
        cat1 = torch.cat((unsqueezed,z),-1)
        squeezed = torch.squeeze(cat1,0)
        t[i][ii] = squeezed

但得到了这个错误

RuntimeError: expand(torch.FloatTensor{[5]}, size=[]): the number of sizes provided (0) must be greater or equal to the number of dimensions in the tensor (1)

我不知道该怎么办

3duebb1j

3duebb1j1#

你应该使用列表理解和一些“外积”技巧:

t_list = [x_ * torch.tensor([[1, 0, 0]]) for x_ in t_list]
sauutmhj

sauutmhj2#

嗯,我把它们存储在一个新的列表中。也许这不是最好的方法,但这是我如何做到的

相关问题