本文簡要介紹python語言中 torch.nn.CrossEntropyLoss
的用法。
用法:
class torch.nn.CrossEntropyLoss(weight=None, size_average=None, ignore_index=- 100, reduce=None, reduction='mean', label_smoothing=0.0)
weight(Tensor,可選的) -給每個類一個手動重新調整的權重。如果給定,則必須是大小為
C
的張量size_average(bool,可選的) -已棄用(請參閱
reduction
)。默認情況下,損失是批次中每個損失元素的平均值。請注意,對於某些損失,每個樣本有多個元素。如果字段size_average
設置為False
,則會對每個小批量的損失求和。當reduce
為False
時忽略。默認值:True
ignore_index(int,可選的) -指定一個被忽略且不影響輸入梯度的目標值。當
size_average
為True
時,損失是在非忽略目標上的平均值。請注意,ignore_index
僅在目標包含類索引時適用。reduce(bool,可選的) -已棄用(請參閱
reduction
)。默認情況下,根據size_average
對每個小批量的觀察結果進行平均或求和。當reduce
是False
時,返回每個批次元素的損失並忽略size_average
。默認值:True
reduction(string,可選的) -指定要應用於輸出的縮減:
'none'
|'mean'
|'sum'
。'none'
:不應用減少,'mean'
:取輸出的加權平均值,'sum'
:輸出將被求和。注意:size_average
和reduce
正在被棄用,同時,指定這兩個參數中的任何一個都將覆蓋reduction
。默認值:'mean'
label_smoothing(float,可選的) -[0.0, 1.0] 中的浮點數。指定計算損失時的平滑量,其中 0.0 表示不平滑。目標成為原始基本事實和均勻分布的混合體,如 Rethinking the Inception Architecture for Computer Vision 中所述。默認值: 。
該標準計算輸入和目標之間的交叉熵損失。
在使用
C
類訓練分類問題時很有用。如果提供,可選參數weight
應該是一維Tensor
,為每個類分配權重。當你有一個不平衡的訓練集時,這特別有用。input
預計將包含每個類的原始未標準化分數。input
必須是大小為 或 的張量,對於K
維情況, 。後者對於更高維度的輸入很有用,例如計算 2D 圖像的交叉熵損失 per-pixel。此標準預期的
target
應包含:ignore_index
,這個損失也接受這個類索引(這個索引可能不一定在類範圍內)。這種情況下未減少的(即reduction
設置為'none'
)損失可以說明為: 範圍內的類索引,其中 是類數;如果指定了其中
K
的 維案例。如果reduction
不是'none'
(默認'mean'
),那麽 是輸入, 是目標, 是權重, 是類數, 跨越小批量維度以及請注意,這種情況等效於
LogSoftmax
和NLLLoss
的組合。每個類別的概率;當每個小批量項目需要超過單個類的標簽時很有用,例如混合標簽、標簽平滑等。這種情況下未減少的(即
reduction
設置為'none'
)損失可以說明為:其中
K
的 維案例。如果reduction
不是'none'
(默認'mean'
),那麽 是輸入, 是目標, 是權重, 是類數, 跨越小批量維度以及
注意
當
target
包含類索引時,此標準的性能通常更好,因為這允許優化計算。僅當每個小批量項目的單個類標簽過於嚴格時,才考慮提供target
作為類概率。- 形狀:
輸入:
C = number of classes
或 與 在K
維損失的情況下。 其中目標:如果包含類索引,則形狀為 ,其中每個值為 ,或者在 K-dimensional 丟失的情況下為 和 。如果包含類概率,則與輸入的形狀相同。
輸出:如果
reduction
是'none'
,則在 K-dimensional 丟失的情況下使用 形狀 或 。否則,標量。
例子:
>>> # Example of target with class indices >>> loss = nn.CrossEntropyLoss() >>> input = torch.randn(3, 5, requires_grad=True) >>> target = torch.empty(3, dtype=torch.long).random_(5) >>> output = loss(input, target) >>> output.backward() >>> >>> # Example of target with class probabilities >>> input = torch.randn(3, 5, requires_grad=True) >>> target = torch.randn(3, 5).softmax(dim=1) >>> output = loss(input, target) >>> output.backward()
參數:
相關用法
- Python torchrec.modules.crossnet.CrossNet用法及代碼示例
- Python PyTorch CriteoIterDataPipe用法及代碼示例
- Python PyTorch Collator用法及代碼示例
- Python PyTorch ConvTranspose3d用法及代碼示例
- Python PyTorch Conv1d用法及代碼示例
- Python PyTorch CSVParser用法及代碼示例
- Python PyTorch CosineAnnealingWarmRestarts.step用法及代碼示例
- Python PyTorch ChannelShuffle用法及代碼示例
- Python PyTorch CocoCaptions用法及代碼示例
- Python PyTorch CSVDictParser用法及代碼示例
- Python PyTorch ContinuousBernoulli用法及代碼示例
- Python PyTorch Cityscapes用法及代碼示例
- Python PyTorch ChainedScheduler用法及代碼示例
- Python PyTorch Cauchy用法及代碼示例
- Python PyTorch ConstantPad2d用法及代碼示例
- Python PyTorch ComplexNorm用法及代碼示例
- Python PyTorch ConvTranspose2d用法及代碼示例
- Python PyTorch CppExtension用法及代碼示例
- Python PyTorch Concater用法及代碼示例
- Python PyTorch Compose用法及代碼示例
- Python PyTorch Chi2用法及代碼示例
- Python PyTorch ConstantLR用法及代碼示例
- Python PyTorch Conv2d用法及代碼示例
- Python PyTorch CosineSimilarity用法及代碼示例
- Python PyTorch ConstantPad1d用法及代碼示例
注:本文由純淨天空篩選整理自pytorch.org大神的英文原創作品 torch.nn.CrossEntropyLoss。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。