使用pytorch时遇到的错误Expected object of scalar type Long but got scalar type Float for argument #2 ‘target

一.错误:

Expected object of scalar type Long but got scalar type Float for argument #2 ‘target’

二.原因及解决方法:

这句话表面上是说需要Long类型,我提供给他的是float类型,然后我把所有的变量都变成了long,发现还是不对。后来我把输入和输出x和y变成了float,因为我使用的是GCN网络,输入的边的邻接矩阵变成long,发现正确了。将float类型的tensor转换为long类型的编码如下:

labels = labels.to(device=device, dtype=torch.int64)

如何labels是dataframe格式的,那么转换为long型的tensor的格式的编程如下:

labels=torch.tensor(labels, dtype=torch.long) 

遇到这种问题一定要静下心来检查自己各种变量的数据类型,不一定非得是float没有变成long,重要的是看类型是否符合逻辑。

参考链接:

https://discuss.pytorch.org/t/expected-object-of-scalar-type-long-but-got-scalar-type-float-for-argument-2-target/33102

你可能感兴趣的:(常见编程问题)