torch.nn.functional.kl_div¶
- torch.nn.functional.kl_div(input, target, size_average=None, reduce=None, reduction='mean', log_target=False)[source][source]¶
計算 KL 散度損失。
詳情請參閱
KLDivLoss。- 引數
input (Tensor) – 形狀任意的對數機率張量。
target (Tensor) – 形狀與 input 相同的張量。關於 target 的解釋,請參閱
log_target。size_average (bool, 可選) – 已棄用(請參閱
reduction)。預設情況下,損失會在 batch 中的每個損失元素上平均。請注意,對於某些損失,每個樣本有多個元素。如果將size_average欄位設定為False,則改為對每個 mini-batch 的損失求和。當 reduce 為False時,忽略此引數。預設值:Truereduce (bool, 可選) – 已棄用(請參閱
reduction)。預設情況下,根據size_average對每個 mini-batch 的觀測值進行平均或求和。當reduce為False時,返回每個 batch 元素的損失,並忽略size_average。預設值:Truereduction (str, 可選) – 指定應用於輸出的歸約方式:
'none'|'batchmean'|'sum'|'mean'。'none':不應用歸約。'batchmean':輸出的總和將除以 batch 大小。'sum':對輸出求和。'mean':輸出將除以輸出中的元素數量。預設值:'mean'log_target (bool) – 一個標誌,指示 target 是否以對數空間傳入。建議在對數空間中傳入某些分佈(如
softmax),以避免顯式log引起的數值問題。預設值:False
- 返回型別
注意
size_average和reduce正在棄用中,在此期間,指定這兩個引數中的任何一個將覆蓋reduction。警告
reduction='mean'不會返回真正的 KL 散度值,請使用reduction='batchmean',它與 KL 數學定義一致。