PyTorch中負對數似然損失函數中的reduction參數的直觀解釋是什么?該參數可以采用“mean”或“sum”等值。它是對批次的元素求和嗎?torch.nn.functional.nll_loss(outputs.mean(0), target, reduction="sum")
1 回答

qq_花開花謝_0
TA貢獻1835條經驗 獲得超7個贊
從文檔中:
指定要應用于輸出的縮減:'none' | '意思' | '和'。'none':不應用減少,'mean':輸出的總和將除以輸出中的元素數,'sum':輸出將被求和。注意: size_average 和 reduce 正在被棄用,同時,指定這兩個 args 中的任何一個都將覆蓋 reduction。默認值:“平均”
如果使用 none,輸出將與批量大小相同,
如果使用均值,則為均值(總和除以批次)
如果使用 sum,它將是所有元素的總和。
您還可以使用以下代碼驗證這一點:
import torch
logit = torch.rand(100,10)
target = torch.randint(10, size=(100,))
m = torch.nn.functional.nll_loss(logit, target)
s = torch.nn.functional.nll_loss(logit, target, reduction="sum")
l = torch.nn.functional.nll_loss(logit, target, reduction="none")
print(torch.abs(m-s/100))
print(torch.abs(l.mean()-m))
輸出應為 0 或非常接近 0。
添加回答
舉報
0/150
提交
取消