本文簡要介紹python語言中 torch.nn.NLLLoss
的用法。
用法:
class torch.nn.NLLLoss(weight=None, size_average=None, ignore_index=- 100, reduce=None, reduction='mean')
weight(Tensor,可選的) -給每個類一個手動重新調整的權重。如果給定,它必須是大小為
C
的張量。否則,它被視為擁有所有的。size_average(bool,可選的) -已棄用(請參閱
reduction
)。默認情況下,損失是批次中每個損失元素的平均值。請注意,對於某些損失,每個樣本有多個元素。如果字段size_average
設置為False
,則會對每個小批量的損失求和。當reduce
為False
時忽略。默認值:True
ignore_index(int,可選的) -指定一個被忽略且不影響輸入梯度的目標值。當
size_average
為True
時,損失是在非忽略目標上的平均值。reduce(bool,可選的) -已棄用(請參閱
reduction
)。默認情況下,根據size_average
對每個小批量的觀察結果進行平均或求和。當reduce
是False
時,返回每個批次元素的損失並忽略size_average
。默認值:True
reduction(string,可選的) -指定要應用於輸出的縮減:
'none'
|'mean'
|'sum'
。'none'
:不應用減少,'mean'
:取輸出的加權平均值,'sum'
:輸出將被求和。注意:size_average
和reduce
正在被棄用,同時,指定這兩個參數中的任何一個都將覆蓋reduction
。默認值:'mean'
負對數似然損失。用
C
類訓練分類問題很有用。如果提供,可選參數
weight
應該是一維張量,為每個類分配權重。當你有一個不平衡的訓練集時,這特別有用。通過前向調用給出的
input
預計將包含每個類的log-probabilities。input
必須是大小為 或 的張量,對於K
維情況, 。後者對於更高維度的輸入很有用,例如為 2D 圖像計算 NLL 損失 per-pixel。通過在網絡的最後一層添加
LogSoftmax
層,可以輕鬆地在神經網絡中獲得 log-probabilities。如果您不想添加額外的圖層,您可以改用CrossEntropyLoss
。此損失預期的
target
應該是 範圍內的類索引,其中C = number of classes
;如果指定了ignore_index
,這個損失也接受這個類索引(這個索引可能不一定在類範圍內)。未減少的(即
reduction
設置為'none'
)損失可以說明為:其中
reduction
不是'none'
(默認'mean'
),那麽 是輸入, 是目標, 是權重, 是批量大小。如果- 形狀:
輸入:
C = number of classes
或 與 在K
維損失的情況下。 或 ,其中目標: 或 ,其中每個值為 ,或在 K-dimensional 丟失的情況下為 和 。
輸出:如果
reduction
是'none'
,則在 K-dimensional 丟失的情況下使用 形狀 或 。否則,標量。
例子:
>>> m = nn.LogSoftmax(dim=1) >>> loss = nn.NLLLoss() >>> # input is of size N x C = 3 x 5 >>> input = torch.randn(3, 5, requires_grad=True) >>> # each element in target has to have 0 <= value < C >>> target = torch.tensor([1, 0, 4]) >>> output = loss(m(input), target) >>> output.backward() >>> >>> >>> # 2D loss example (used, for example, with image inputs) >>> N, C = 5, 4 >>> loss = nn.NLLLoss() >>> # input is of size N x C x height x width >>> data = torch.randn(N, 16, 10, 10) >>> conv = nn.Conv2d(16, C, (3, 3)) >>> m = nn.LogSoftmax(dim=1) >>> # each element in target has to have 0 <= value < C >>> target = torch.empty(N, 8, 8, dtype=torch.long).random_(0, C) >>> output = loss(m(conv(data)), target) >>> output.backward()
參數:
相關用法
- Python PyTorch Normal用法及代碼示例
- Python PyTorch Node.prepend用法及代碼示例
- Python PyTorch frexp用法及代碼示例
- Python PyTorch jvp用法及代碼示例
- Python PyTorch cholesky用法及代碼示例
- Python PyTorch vdot用法及代碼示例
- Python PyTorch ELU用法及代碼示例
- Python PyTorch ScaledDotProduct.__init__用法及代碼示例
- Python PyTorch gumbel_softmax用法及代碼示例
- Python PyTorch get_tokenizer用法及代碼示例
- Python PyTorch saved_tensors_hooks用法及代碼示例
- Python PyTorch positive用法及代碼示例
- Python PyTorch renorm用法及代碼示例
- Python PyTorch AvgPool2d用法及代碼示例
- Python PyTorch MaxUnpool3d用法及代碼示例
- Python PyTorch Bernoulli用法及代碼示例
- Python PyTorch Tensor.unflatten用法及代碼示例
- Python PyTorch Sigmoid用法及代碼示例
- Python PyTorch Tensor.register_hook用法及代碼示例
- Python PyTorch ShardedEmbeddingBagCollection.named_parameters用法及代碼示例
- Python PyTorch sqrt用法及代碼示例
- Python PyTorch PackageImporter.id用法及代碼示例
- Python PyTorch column_stack用法及代碼示例
- Python PyTorch diag用法及代碼示例
- Python PyTorch skippable用法及代碼示例
注:本文由純淨天空篩選整理自pytorch.org大神的英文原創作品 torch.nn.NLLLoss。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。