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
【问题讨论】:
第一个张量必须转换为floatt = 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