TypeError: CrossEntropyLoss.forward() 得到了一个意外的关键字参数'weight'



我得到这个错误:

File "/nitorch/trainer.py", line 110, in __init__
nn.CrossEntropyLoss(outputs, labels, weight = weights)
File "/home/gonzalo/miniconda3/envs/cnn2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
return forward_call(*input, **kwargs)
TypeError: CrossEntropyLoss.forward() got an unexpected keyword argument 'weight'

我试图通过使用torch.nn.CrossEntropyLoss手动重新缩放每个类的权重来获得损失:loss = nn.CrossEntropyLoss(outputs, labels, weight = weights)其中weights是与输出和标签长度相同的权重张量。

torch.nn.CrossEntropyLoss的文档说它接受权重来重新缩放类https://pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html

会发生什么?

您首先需要使用类权重创建nn.CrossEntropyLoss的实例,然后使用输出和标签调用它:

loss = nn.CrossEntropyLoss(weight=weights)
output = loss(outputs, labels)

所有pytorch文档都在底部包含示例。

相关内容

最新更新