Traceback (most recent call last):
File "/home/hgx/pycharm-2020.1.3/plugins/python/helpers/pydev/_pydevd_bundle/pydevd_exec2.py", line 3, in Exec
exec(exp, global_vars, local_vars)
File "<input>", line 1, in <module>
File "/home/hgx/anaconda3/envs/bytetrack/lib/python3.7/site-packages/torch/nn/modules/module.py", line 1102, in _call_impl
return forward_call(*input, **kwargs)
File "/home/hgx/anaconda3/envs/bytetrack/lib/python3.7/site-packages/torch/nn/modules/loss.py", line 1152, in forward
label_smoothing=self.label_smoothing)
File "/home/hgx/anaconda3/envs/bytetrack/lib/python3.7/site-packages/torch/nn/functional.py", line 2846, 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 'Int'
数据类型导致的错误
进行数据类型转换
id_targets = id_targets.to(torch.int64)
[debug] RuntimeError: “nll_loss_forward_reduce_cuda_kernel_2d_index“ not implemented for ‘Int‘
问题描述在使用nn.CrossEntropyLoss时出现报错:loss_id = self.IDLoss(id_preds, id_targets)Traceback (most recent call last): File "/home/hgx/pycharm-2020.1.3/plugins/python/helpers/pydev/_pydevd_bundle/pydevd_exec2.py", line 3, in Exec exec(exp, global_vars, lo
报错[debug] RuntimeError: “nll_loss_forward_reduce_cuda_kernel_2d_index“ not implemented for ‘float‘
看报错内容应该是类型问题,查阅pytorch官网CrossEntropyLoss — PyTorch 1.11.0 documentationhttps://pytorch.org/docs/stable/generated/
我们为大型强子对撞机运行II中的成对产生的壁虎和胶合糖的横截面提供了最新的预测。 首先,我们使用NNPDF3.0NLO全局分析更新基于NLO + NLL子截面的计算。 这项研究包括对来自高阶,PDF和强耦合的理论不确定性的全面描述。 然后,我们探索使用NLO + NLL阈值恢复来计算最近的NNPDF3.0 PDF的含义。 我们发现,由阈值改进的PDF导致的结果偏移在基于NLO PDF的计算的总理论不确定性范围内。 但是,我们还观察到,NLO + NLL横截面的中心值以定性和定量方式进行了修改,说明了使用阈值改进的PDF和恢复的部分截面的相关性和影响。 基于NNPDF3.0NLO的更新的NLO + NLL横截面以NLL-fast格式公开提供,并且应该是解释运行II中对超对称粒子的解释的重要成分。
运行pytorch在计算cross_entropy的loss遇到报错
RuntimeError: "nll_loss_forward_reduce_cuda_kernel_2d_index" not implemented for 'Int'`
原因是pytorch自带的损失计算函数不支持原本的标签1,2,3,4…,n,需要转换成网络需要的one_hot编码才行
具体代码如下
one_hot = torch.zeros(np.array(batch_size, num_class, device=tor
针对情况二,可以利用函数scatter函数,详见官方说明https://blog.csdn.net/duan_zhihua/article/details/82556676
目标 [batch_size, h, w]
输入的目标矩阵,每个像素必须是类型.举个例子。第一个像素是0,代表着类别属于输入的第1个通道;第二个像素是0,代表着类别属于输入的第0个通道,以此类推。
x = Variable(torch.Tensor([[[1, 2, 1],
[2, 2, 1],
[0, 1, 1]],
[[0, 1, 3],
在PyTorch中遇到了如标题的问题,网上大多数给的是类型不匹配问题,在stackoverflow找到了问题的答案,这里出现的问题是因为loss需要one-hot类型的数据,而我们使用的是类别标签。
什么是one-hot?
一个例子解释什么是one-hot,对于5分类问题,我们使用[0,0,1,0,0]来表示这个实例是属于第三个类别的,等价于类别标签[2](从0对类别编码)。关于one-hot的好...
RuntimeError: "nll_loss_forward_reduce_cuda_kernel_2d_index" not implemented for 'Int'
这个错误通常是由于数据类型不匹配导致的。在 PyTorch 中,`nll_loss` 函数的输入参数通常是浮点数类型的张量,而不是整数类型的张量。
你可以尝试将输入张量转换为浮点数类型,例如使用 `.float()` 方法将整数类型的张量转换为浮点数类型的张量:
```python
import torch
# 创建一个整数类型的张量
x = torch.tensor([1, 2, 3], dtype=torch.int)
# 将整数类型的张量转换为浮点数类型的张量
x = x.float()
# 使用 nll_loss 函数对张量进行计算
loss = torch.nn.functional.nll_loss(x, ...)
如果你仍然遇到问题,请提供更多的上下文和代码,以便更好地帮助你解决问题。