評價此頁

HuberLoss#

class torch.nn.modules.loss.HuberLoss(reduction='mean', delta=1.0)[原始碼]#

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

對於大小為 NN 的批次,未約簡的損失可以描述為

(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',則 ()(*),形狀與輸入相同。

forward(input, target)[原始碼]#

執行前向傳播。

返回型別

張量