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

最新推荐文章于 2024-04-01 11:20:37 发布
最新推荐文章于 2024-04-01 11:20:37 发布 阅读量5.4k

问题描述:

跑卷积神经网络的时候把数据封装成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中的TypeError: embedding(): argument ‘indices‘ (position 2) must be Tensor, not list 问题描述:跑卷积神经网络的时候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,
TensorFlow 卷积神经网络系列案例(1):猫狗识别 https://blog.csdn.net/duan_zhihua/article/details/81156693 TensorFlow 系列案例(2):自然语言处理-TensorFlow + Word2Vechttps://blog.csdn.net/duan_zhihua/article/details/81257323 Ten...
当我做loss backward的时候,遇到这个问题。 先是查到,这个问题可以通过autograd.variable解决,我将最后得到loss的间变量加上之后觉得无法利用之前的信息 手写双线性插值也并不能解决这个问题 在pytorch社区发现类似问题,有人提出,不用index,而是用 gather, index_put_ , masked_scatter_ or grid_sample ,给...
前面tensor是128组index组成的word_list,后面的tensor是每一句话对应的标签,共128个。 所以要将前面的数据拿出来放入模型进行训练,而不是整个tuple。 File “D:/python/modelsmy/trainvgg16.py”, line 77, in train(net, train_dataSet, df_train, test_dataSet, df_test, optimizer, device, num_epochs) File “D:/python/modelsmy/trainvgg16.py”, line 34, in train l = loss(y_hat, y) TypeError: kl_div(): argument
出现这个错误可能不是程序本身的错误,我在找的时候并没有发现程序有相关的赋值,conv2d的参数都是封装好的。 查看需要安装的包发现是torch版本的问题,所以可以对torch版本进行更新,但已有的cuda在官网上与torch版本不对应,这个可以不用管,直接下载程序需要的torch即可。
1.tensorflow.python.framework.errors_impl.permissiondeniederror /path permission denied 问题的解决方式 在Linux环境运行python程序时可能会出现上述问题,解决问题的办法就是将你的路径改为绝对路径,例如: ‘/path/to/MNIST_data/’ "/home/yangjy/path...
TensorFlow升级到2.0后给出了代码自动升级的脚本和使用方法,详情可见官网 TensorFlow官网:https://www.tensorflow.org/guide/upgrade 代码链接: tf_upgrade_v2.py # Licensed u...
在使用pytorch的torchvision.models.segmentation.fcn_resnet50进行获得已经训练好的预训练模型时,所得结果的输出给我提示说collections.OrderedDict' object has no attribute 'shape'。直译过来就是collections.OrderedDict对象没有shape这一属性,给我整的一脸蒙逼,直接调用的网络输出为什么不是tensor而是一个有序数组呢。 在国内找了好久没找到解决答案,于是就去谷歌上搜了一下找到了解决
PyTorch】成功解决TypeError: linear(): argument ‘input‘ (position 1) must be Tensor, not list
在使用pytorch框架时,难免需要对数据集进行训练集和验证集的划分,一般使用sklearn.model_selection的train_test_split方法 该方法使用如下: from sklearn.model_selection import train_test_split import numpy as np import torch import torch.autogra...
data_ = data.cpu().data.numpy() https://blog.csdn.net/qq_41368074/article/details/105560274
TypeError系列之:TypeError: conv2d(): argument 'input' (position 1) must be Tensor, not NoneType
这里出现类似错误往往是因为,conv2d()函数的第一个参数,需要时一个tensor行的数据,然而却赋值成了not后给的类型。 我出现问题的原因是,间有一个函数缺少返回值,因此会造成NoneType的错误。其余错误类似,只需把送给conv2d()的数据转换成tensor即可; 这里:numpy 和 tensor数据相互转换的方法: 1.numpy->tensor data = to...
当使用Python3-pygame时出现TypeError: argument 1 must be 2-item sequence, not int提示原始代码:screen = pygame.display.set_mode((1200,800)应改为:screen_width = 1200 screen_height = 800 screen = pygame.display.set_mode...
解决python中的TypeError: embedding(): argument ‘indices‘ (position 2) must be Tensor, not list