快捷方式

HuberLoss

class torch.nn.HuberLoss(reduction='mean', delta=1.0)[source][source]

建立一個損失準則,當絕對元素級誤差小於 delta 時使用平方項,否則使用 delta 縮放的 L1 項。該損失結合了 L1LossMSELoss 的優點;delta 縮放的 L1 區域使得損失對異常值不如 MSELoss 敏感,而 L2 區域在接近 0 時提供了比 L1Loss 更好的平滑性。更多資訊請參見 Huber loss

對於大小為 N 的批次,未進行歸約的損失可描述為

(x,y)=L={l1,...,lN}T\ell(x, y) = L = \{l_1, ..., l_N\}^T

其中

ln={0.5(xnyn)2,if xnyn<deltadelta(xnyn0.5delta),otherwise l_n = \begin{cases} 0.5 (x_n - y_n)^2, & \text{if } |x_n - y_n| < delta \\ delta * (|x_n - y_n| - 0.5 * delta), & \text{otherwise } \end{cases}

如果 reduction 不是 none,則

(x,y)={mean(L),if reduction=‘mean’;sum(L),if reduction=‘sum’.\ell(x, y) = \begin{cases} \operatorname{mean}(L), & \text{if reduction} = \text{`mean';}\\ \operatorname{sum}(L), & \text{if reduction} = \text{`sum'.} \end{cases}

注意

當 delta 設定為 1 時,此損失等同於 SmoothL1Loss。通常,此損失與 SmoothL1Loss 相差 delta 倍(在 Smooth L1 中也稱為 beta)。有關兩種損失之間行為差異的更多討論,請參見 SmoothL1Loss

引數
  • reduction (str, optional) – 指定應用於輸出的歸約方式:'none' | 'mean' | 'sum''none': 不應用歸約,'mean': 輸出的總和將除以輸出中的元素數量,'sum': 輸出將被求和。預設值:'mean'

  • delta (float, optional) – 指定在 delta 縮放的 L1 和 L2 損失之間切換的閾值。該值必須為正。預設值:1.0

形狀
  • 輸入:()(*),其中 表示任意數量的維度。

  • 目標:()(*),與輸入具有相同的形狀。

  • 輸出:標量。如果 reduction'none',則為 ()(*),與輸入具有相同的形狀。

文件

訪問 PyTorch 的全面開發者文件

檢視文件

教程

獲取針對初學者和高階開發者的深度教程

檢視教程

資源

查詢開發資源並獲得問題解答

檢視資源