解决python中的TypeError: embedding(): argument ‘indices‘ (position 2) must be Tensor, not list

问题描述:

跑卷积神经网络的时候把数据封装成batch的时候,encoder报了如下的错
TypeError: embedding(): argument ‘indices’ (position 2) must be Tensor, not list
上一个输出的结果是一个列表,这里需要的是个张量,因此报错。

a=[torch.tensor([53, 14, 12, 36, 32, 54, 53, 42,  8, 12, 54,  1, 42,  1, 40, 48, 31, 14,
        53, 42,  8, 12, 54,  1, 53, 42, 33, 54,  1, 40, 48, 31, 40, 48, 31, 42,
         1, 42, 31, 42, 31, 53, 42,  8, 12, 54,  1, 42, 42, 31, 42,  0,  0,  0,
         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
         0,  0,  0,  0,  0,  0])]

原因分析:

数据类型不对应。


解决方案:

a=[torch.tensor([53, 14, 12, 36, 32, 54, 53, 42,  8, 12, 54,  1, 42,  1, 40, 48, 31, 14,
        53, 42,  8, 12, 54,  1, 53, 42, 33, 54,  1, 40, 48, 31, 40, 48, 31, 42,
         1, 42, 31, 42, 31, 53, 42,  8, 12, 54,  1, 42, 42, 31, 42,  0,  0,  0,
         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
         0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
         0,  0,  0,  0,  0,  0])]
a=a[0]
print(a)

这里a的类型就变成tensor了,后面的数据流也就对了。这种type的错误多尝试转换数据类型试试就对了。

你可能感兴趣的:(python,list,pytorch)