参考:
https://blog.csdn.net/BetrayFree/article/details/133927378
完整报错如下:
Traceback (most recent call last):
File "/home/yingmuzhi/SpecML2/test.py", line 150, in <module>
trainer.fit(model, data)
File "/home/yingmuzhi/SpecML2/core.py", line 486, in fit
self.fit_epoch()
File "/home/yingmuzhi/SpecML2/core.py", line 496, in fit_epoch
loss = self.model.training_step(self.prepare_batch(batch))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/yingmuzhi/SpecML2/core.py", line 393, in training_step
l = self.loss(self(*batch[:-1]), batch[-1])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/yingmuzhi/SpecML2/core.py", line 762, in loss
return F.cross_entropy(
^^^^^^^^^^^^^^^^
File "/root/anaconda3/envs/env_cp311_ymz/lib/python3.11/site-packages/torch/nn/functional.py", line 3029, in cross_entropy
return torch._C._nn.cross_entropy_loss(input, target, weight, _Reduction.get_enum(reduction), ignore_index, label_smoothing)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
RuntimeError: "nll_loss_forward_reduce_cuda_kernel_2d_index" not implemented for 'Float'
错误代码如下:

出现这个原因是因为我的代码中使用了BCE Loss,而BCE Loss函数输入的label标签类型应该是torch.long格式,增加代码如下进行强转:
Y = Y.type(torch.long)

文章讲述了在使用BCELoss函数时遇到的RuntimeError,原因是标签Y的类型为Float而非Long。作者提供了解决方案,即强制将Y转换为torch.long格式以确保GPU计算的兼容性。



9294

被折叠的 条评论
为什么被折叠?



