Pytorch 抛出错误 RuntimeError: result type Float can't be cast to the desired output type Long

Posted

技术标签:

【中文标题】Pytorch 抛出错误 RuntimeError: result type Float can\'t be cast to the desired output type Long【英文标题】:Pytorch is throwing an error RuntimeError: result type Float can't be cast to the desired output type LongPytorch 抛出错误 RuntimeError: result type Float can't be cast to the desired output type Long 【发布时间】:2022-01-09 22:25:40 【问题描述】:

我应该如何摆脱以下错误?

>>> t = torch.tensor([[1, 0, 1, 1]]).T
>>> p = torch.rand(4,1)
>>> torch.nn.BCEWithLogitsLoss()(p, t)

上面的代码抛出以下错误:

RuntimeError:结果类型 Float 无法转换为所需的输出类型 Long

【问题讨论】:

第一个张量必须转换为float t = torch.tensor([[1., 0., 1., 1.]]).T 【参考方案1】:

BCEWithLogitsLoss 要求它的目标是一个float 张量,而不是long。所以你应该通过dtype=torch.float32指定t张量的类型:

import torch

t = torch.tensor([[1, 0, 1, 1]], dtype=torch.float32).T
p = torch.rand(4,1)
loss_fn = torch.nn.BCEWithLogitsLoss()

print(loss_fn(p, t))

输出:

tensor(0.5207)

【讨论】:

以上是关于Pytorch 抛出错误 RuntimeError: result type Float can't be cast to the desired output type Long的主要内容,如果未能解决你的问题,请参考以下文章

RuntimeError:cuDNN 错误:CUDNN_STATUS_NOT_INITIALIZED 使用 pytorch

RuntimeError:梯度计算所需的变量之一已被就地操作修改:PyTorch 错误

Pytorch RNN 错误:RuntimeError:输入必须有 3 个维度得到 1

Pytorch 错误“RuntimeError: index out of range: 试图访问索引 512 out of table with 511 rows”

在pytorch中运行py代码出现如下错误,求大神帮助 RuntimeError: CUDA error: unknown error

PyTorch:RuntimeError:变量元组的元素0是易失性的