簡體   English   中英

TypeError: CrossEntropyLoss.forward() 得到了一個意外的關鍵字參數 'weight'

[英]TypeError: CrossEntropyLoss.forward() got an unexpected keyword argument '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 給每個 class 的手動重新調整權重來獲得損失: loss = nn.CrossEntropyLoss(outputs, labels, weight = weights)其中 weights 是權重的張量,其長度與輸出相同和標簽。

torch.nn.CrossEntropyLoss 的文檔說它接受權重以重新縮放類https://pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html

會發生什么?

您首先需要使用 class 權重創建一個nn.CrossEntropyLoss實例,然后使用 output 和標簽調用它:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM