Found dtype Long but expected Float错误通常发生在尝试将一个数据类型为Long
的张量传递给一个期望数据类型为Float
的函数或操作时。
在PyTorch中,Long
和Float
是两种常见的数据类型,分别对应于64位整数和32位浮点数。某些函数或操作可能只接受特定数据类型的输入。例如loss_func函数出现报错,它需要输入数据为float
这时候只需要通过.float将数据类型转为float即可满足loss_func的输入数据类型要求
out_dis = out_dis.float()
yb = yb.float()
loss_r = loss_func(out_dis, yb)
loss_r.backward()
需要注意的是这种转换可能会导致数据丢失,进而影响后续的计算,如这里的损失函数,因为Long
类型的整数可以表示的范围比Float
类型的浮点数大。