損失函數理解彙總,結合PyTorch1.7和TensorFlow2



做者丨DengBoCong@知乎
來源丨https://zhuanlan.zhihu.com/p/271911178
編輯丨極市平臺
本文僅用於學術分享,若有侵權,請聯繫後臺做刪文處理。

本文打算討論在深度學習中經常使用的十餘種損失函數(含變種),結合PyTorch和TensorFlow2對其概念、公式及用途進行闡述,但願能達到看過的夥伴對各類損失函數有個大體的瞭解以及使用。本文對原理只是淺嘗輒止,不進行深挖,感興趣的夥伴能夠針對每一個部分深刻翻閱資料。
使用版本:
  • TensorFlow2.3
  • PyTorch1.7.0

01 交叉熵損失(CrossEntropyLoss)

對於單事件的信息量而言,當事件發生的機率越大時,信息量越小,須要明確的是,信息量是對於單個事件來講的,實際事件存在不少種可能,因此這個時候熵就派上用場了,熵是表示隨機變量不肯定的度量,是對全部可能發生的事件產生的信息量的指望。交叉熵用來描述兩個分佈之間的差距,交叉熵越小,假設分佈離真實分佈越近,模型越好。
javascript


在分類問題模型中(不必定是二分類),如邏輯迴歸、神經網絡等,在這些模型的最後一般會通過一個sigmoid函數(softmax函數),輸出一個機率值(一組機率值),這個機率值反映了預測爲正類的可能性(一組機率值反應了全部分類的可能性)。而對於預測的機率分佈和真實的機率分佈之間,使用交叉熵來計算他們之間的差距,換句不嚴謹的話來講,交叉熵損失函數的輸入,是softmax或者sigmoid函數的輸出。交叉熵損失能夠從理論公式推導出幾個結論(優勢),具體公式推導不在這裏詳細講解,以下:php

  • 預測的值跟目標值越遠時,參數調整就越快,收斂就越快;css

  • 不會陷入局部最優解html


交叉熵損失函數的標準形式(也就是二分類交叉熵損失)以下:java


其中,   表示樣本   的標籤,正類爲1,負類爲0,   表示樣本   預測爲正的機率。

多分類交叉熵損失以下:
其中,   表示類別的數量,   表示變量(0或1),若是該類別和樣本   的類別相同就是1,不然是0,   表示對於觀測樣本   屬於類別   的預測機率。

Tensorflow:
  • BinaryCrossentropy[1]:二分類,常常搭配Sigmoid使用
  
  
   
   
            
   
   

  
  
   
   
            
   
   
tf.keras.losses.BinaryCrossentropy(from_logits=False, label_smoothing=0, reduction=losses_utils.ReductionV2.AUTO, name='binary_crossentropy')參數: from_logits:默認False。爲True,表示接收到了原始的logits,爲False表示輸出層通過了機率處理(softmax) label_smoothing:[0,1]之間浮點值,加入噪聲,減小了真實樣本標籤的類別在計算損失函數時的權重,最終起到抑制過擬合的效果。 reduction:傳入tf.keras.losses.Reduction類型值,默認AUTO,定義對損失的計算方式。
  • binary_crossentropy[2]
  
  
   
   
            
   
   

  
  
   
   
            
   
   
tf.keras.losses.binary_crossentropy(y_true, y_pred, from_logits=False, label_smoothing=0)參數: from_logits:默認False。爲True,表示接收到了原始的logits,爲False表示輸出層通過了機率處理(softmax) label_smoothing:[0,1]之間浮點值,加入噪聲,減小了真實樣本標籤的類別在計算損失函數時的權重,最終起到抑制過擬合的效果。
  • CategoricalCrossentropy[3]:多分類,常常搭配Softmax使用
  
  
   
   
            
   
   

  
  
   
   
            
   
   
tf.keras.losses.CategoricalCrossentropy(from_logits=False, label_smoothing=0, reduction=losses_utils.ReductionV2.AUTO, name='categorical_crossentropy')參數: from_logits:默認False。爲True,表示接收到了原始的logits,爲False表示輸出層通過了機率處理(softmax) label_smoothing:[0,1]之間浮點值,加入噪聲,減小了真實樣本標籤的類別在計算損失函數時的權重,最終起到抑制過擬合的效果。  reduction:傳入tf.keras.losses.Reduction類型值,默認AUTO,定義對損失的計算方式。
  • categorical_crossentropy[4]
  
  
   
   
            
   
   

  
  
   
   
            
   
   
tf.keras.losses.categorical_crossentropy(y_true, y_pred, from_logits=False, label_smoothing=0)參數: from_logits:默認False。爲True,表示接收到了原始的logits,爲False表示輸出層通過了機率處理(softmax) label_smoothing:[0,1]之間浮點值,加入噪聲,減小了真實樣本標籤的類別在計算損失函數時的權重,最終起到抑制過擬合的效果。
  • SparseCategoricalCrossentropy[5]:多分類,常常搭配Softmax使用,和CategoricalCrossentropy不一樣之處在於,CategoricalCrossentropy是one-hot編碼,而SparseCategoricalCrossentropy使用一個位置整數表示類別
  
  
   
   
            
   
   

  
  
   
   
            
   
   
tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False, reduction=losses_utils.ReductionV2.AUTO, name='sparse_categorical_crossentropy')參數: from_logits:默認False。爲True,表示接收到了原始的logits,爲False表示輸出層通過了機率處理(softmax) reduction:傳入tf.keras.losses.Reduction類型值,默認AUTO,定義對損失的計算方式。
  • sparse_categorical_crossentropy[6]
tf.keras.losses.sparse_categorical_crossentropy(y_true, y_pred, from_logits=False, axis=-1)參數: from_logits:默認False。爲True,表示接收到了原始的logits,爲False表示輸出層通過了機率處理(softmax) axis:默認是-1,計算交叉熵的維度
PyTorch:
  • BCELoss[7]
  
  
   
   
            
   
   

  
  
   
   
            
   
   
torch.nn.BCELoss(weight: Optional[torch.Tensor] = None, size_average=None, reduce=None, reduction: str = 'mean')參數: weight:每一個分類的縮放權重,傳入的大小必須和類別數量一至 size_average:bool類型,爲True時,返回的loss爲平均值,爲False時,返回的各樣本的loss之和 reduce:bool類型,返回值是否爲標量,默認爲True  reduction:string類型,'none' | 'mean' | 'sum'三種參數值
  • BCEWithLogitsLoss[8]:其實和TensorFlow是的`from_logits`參數很像,在BCELoss的基礎上合併了Sigmoid
  
  
   
   
            
   
   

  
  
   
   
            
   
   
torch.nn.BCEWithLogitsLoss(weight: Optional[torch.Tensor] = None, size_average=None, reduce=None, reduction: str = 'mean', pos_weight: Optional[torch.Tensor] = None)參數: weight:每一個分類的縮放權重,傳入的大小必須和類別數量一至 size_average:bool類型,爲True時,返回的loss爲平均值,爲False時,返回的各樣本的loss之和 reduce:bool類型,返回值是否爲標量,默認爲True reduction:string類型,'none' | 'mean' | 'sum'三種參數值 pos_weight:正樣本的權重, 當p>1,提升召回率,當p<1,提升精確度。可達到權衡召回率(Recall)和精確度(Precision)的做用。
  • CrossEntropyLoss[9]

torch.nn.CrossEntropyLoss(weight: Optional[torch.Tensor]python

= None, size_average=None, ignore_index: int = -100,git

reduce=None, reduction: str = 'mean')
web


  
  
   
   
            
   
   
參數: weight:每一個分類的縮放權重,傳入的大小必須和類別數量一至 size_average:bool類型,爲True時,返回的loss爲平均值,爲False時,返回的各樣本的loss之和 ignore_index:忽略某一類別,不計算其loss,其loss會爲0,而且,在採用size_average時,不會計算那一類的loss,除的時候的分母也不會統計那一類的樣本 reduce:bool類型,返回值是否爲標量,默認爲True reduction:string類型,'none' | 'mean' | 'sum'三種參數值

02 KL散度

咱們在計算預測和真實標籤之間損失時,須要拉近他們分佈之間的差距,即模型獲得的預測分佈應該與數據的實際分佈狀況儘量相近。KL散度(相對熵)是用來衡量兩個機率分佈之間的差別。模型須要獲得最大似然估計,乘以負Log之後就至關於求最小值,此時等價於求最小化KL散度(相對熵)。因此獲得KL散度就獲得了最大似然。又由於KL散度中包含兩個部分,第一部分是交叉熵,第二部分是信息熵,即KL=交叉熵−信息熵。信息熵是消除不肯定性所需信息量的度量,簡單來講就是真實的機率分佈,而這部分是固定的,因此優化KL散度就是近似於優化交叉熵。下面是KL散度的公式:
算法

聯繫上面的交叉熵,咱們能夠將公式簡化爲(KL散度 = 交叉熵 - 熵):編程

監督學習中,由於訓練集中每一個樣本的標籤是已知的,此時標籤和預測的標籤之間的KL散度等價於交叉熵。


TensorFlow:
  • KLD | kullback_leibler_divergence[10]
tf.keras.losses.KLD(y_truey_pred)
  • KLDivergence[11]
  
  
   
   
            
   
   

  
  
   
   
            
   
   
tf.keras.losses.KLDivergence(reduction=losses_utils.ReductionV2.AUTO, name='kl_divergence')參數: reduction:傳入tf.keras.losses.Reduction類型值,默認AUTO,定義對損失的計算方式。
Pytorch:
  • KLDivLoss[12]
torch.nn.KLDivLoss(size_average=None, reduce=None, reduction: str = 'mean', log_target: bool = False)參數: size_average:bool類型,爲True時,返回的loss爲平均值,爲False時,返回的各樣本的loss之和 reduce:bool類型,返回值是否爲標量,默認爲True reduction-三個值,none: 不使用約簡;mean:返回loss和的平均值;sum:返回loss的和。默認:mean log_target:默認False,指定是否在日誌空間中傳遞目標

03 平均絕對偏差(L1範數損失)

L1範數損失函數,也被稱爲最小絕對值誤差(LAD),最小絕對值偏差(LAE)。總的說來,它是把目標值   與估計值   的絕對差值的總和   最小化:
缺點:
  • 梯度恆定,不論預測值是否接近真實值,這很容易致使發散,或者錯過極值點。
  • 導數不連續,致使求解困難。這也是L1損失函數不普遍使用的主要緣由。
優勢:
  • 收斂速度比L2損失函數要快,這是經過對比函數圖像得出來的,L1能提供更大且穩定的梯度。
  • 對異常的離羣點有更好的魯棒性,下面會以例子證明。

TensorFlow:
  • MAE | mean_absolute_error[13]
tf.keras.losses.MAE(y_true, y_pred)
  • MeanAbsoluteError[14]
  
  
   
   
            
   
   

  
  
   
   
            
   
   
tf.keras.losses.MeanAbsoluteError(reduction=losses_utils.ReductionV2.AUTO, name='mean_absolute_error')參數: reduction:傳入tf.keras.losses.Reduction類型值,默認AUTO,定義對損失的計算方式。
  • MeanAbsolutePercentageError[15]:平均絕對百分比偏差
  
  
   
   
            
   
   

  
  
   
   
            
   
   
tf.keras.losses.MeanAbsolutePercentageError(reduction=losses_utils.ReductionV2.AUTO, name='mean_absolute_percentage_error')公式:loss = 100 * abs(y_true - y_pred) / y_true參數: reduction:傳入tf.keras.losses.Reduction類型值,默認AUTO,定義對損失的計算方式。
  • MAPE | mean_absolute_percentage_error[16]:平均絕對百分比偏差
  
  
   
   
            
   
   

  
  
   
   
            
   
   
tf.keras.losses.MAPE(y_true, y_pred)公式:loss = 100 * mean(abs((y_true - y_pred) / y_true), axis=-1)
  • Huber[17]
  
  
   
   
            
   
   

  
  
   
   
            
   
   
tf.keras.losses.Huber(delta=1.0, reduction=losses_utils.ReductionV2.AUTO, name='huber_loss')公式:error = y_true - y_pred參數: delta:float類型,Huber損失函數從二次變爲線性的點。 reduction:傳入tf.keras.losses.Reduction類型值,默認AUTO,定義對損失的計算方式。
PyTorch:
  • L1Loss[18]

torch.nn.L1Loss(size_average=None, reduce=None, reduction: str = 'mean')參數: size_average:bool類型,爲True時,返回的loss爲平均值,爲False時,返回的各樣本的loss之和 reduce:bool類型,返回值是否爲標量,默認爲True reduction-三個值,none: 不使用約簡;mean:返回loss和的平均值;sum:返回loss的和。默認:mean
  • l1_loss[19]
torch.nn.functional.l1_loss(input, target, size_average=None, reduce=None, reduction='mean')
  • SmoothL1Loss[20]:平滑版L1損失,也被稱爲 Huber 損失函數。
其中,當   時,   ,不然 
  
  
   
   
            
   
   

  
  
   
   
            
   
   
torch.nn.SmoothL1Loss(size_average=None, reduce=None, reduction: str = 'mean', beta: float = 1.0)參數: size_average:bool類型,爲True時,返回的loss爲平均值,爲False時,返回的各樣本的loss之和 reduce:bool類型,返回值是否爲標量,默認爲True reduction-三個值,none: 不使用約簡;mean:返回loss和的平均值;sum:返回loss的和。默認:mean beta:默認爲1,指定在L1和L2損耗之間切換的閾值
  • smooth_l1_loss[21]
torch.nn.functional.smooth_l1_loss(input, target, size_average=None, reduce=None, reduction='mean', beta=1.0)

04 均方偏差損失(L2範數損失)

L2範數損失函數,也被稱爲最小平方偏差(LSE)。總的來講,它是把目標值   與估計值   的差值的平方和   最小化:
缺點:
  • 收斂速度比L1慢,由於梯度會隨着預測值接近真實值而不斷減少。
  • 對異常數據比L1敏感,這是平方項引發的,異常數據會引發很大的損失。
優勢:
  • 它使訓練更容易,由於它的梯度隨着預測值接近真實值而不斷減少,那麼它不會輕易錯過極值點,但也容易陷入局部最優。
  • 它的導數具備封閉解,優化和編程很是容易,因此不少迴歸任務都是用MSE做爲損失函數。

TensorFlow:
  • MeanSquaredError[22]

tf.keras.losses.MeanSquaredError(reduction=losses_utils.ReductionV2.AUTO, name='mean_squared_error')公式:loss = square(y_true - y_pred)參數: reduction:傳入tf.keras.losses.Reduction類型值,默認AUTO,定義對損失的計算方式。
  • MSE | mean_squared_error[23]
  
  
   
   
            
   
   

  
  
   
   
            
   
   
tf.keras.losses.MSE(y_truey_pred)公式:loss = mean(square(y_true - y_pred), axis=-1)
  • MeanSquaredLogarithmicError[24]
tf.keras.losses.MeanSquaredLogarithmicError(reduction=losses_utils.ReductionV2.AUTO, name='mean_squared_logarithmic_error')公式:loss = square(log(y_true + 1.) - log(y_pred + 1.))參數: reduction:傳入tf.keras.losses.Reduction類型值,默認AUTO,定義對損失的計算方式。
  • MSLE | mean_squared_logarithmic_error[25]
tf.keras.losses.MSLE(y_true, y_pred)公式:loss = mean(square(log(y_true + 1) - log(y_pred + 1)), axis=-1)


PyTorch:
  • MSELoss[26]
torch.nn.MSELoss(size_average=None, reduce=None, reduction: str = 'mean')參數: size_average:bool類型,爲True時,返回的loss爲平均值,爲False時,返回的各樣本的loss之和 reduce:bool類型,返回值是否爲標量,默認爲True reduction-三個值,none: 不使用約簡;mean:返回loss和的平均值;sum:返回loss的和。默認:mean
  • mse_loss[27]
torch.nn.functional.mse_loss(input, target, size_average=None, reduce=None, reduction='mean')

05 Hinge loss

有人把hinge loss稱爲鉸鏈損失函數,它可用於「最大間隔(max-margin)」分類,其最著名的應用是做爲SVM的損失函數。hinge loss專用於二分類問題,標籤值   ,預測值   。二分類問題的目標函數的要求以下:當   大於等於   或者小於等於   時,都是分類器肯定的分類結果,此時的損失函數loss爲0。而當預測值   時,分類器對分類結果不肯定,loss不爲0。顯然,當   時,loss達到最大值。對於輸出   ,當前   的損失爲:
擴展到多分類問題上就須要多加一個邊界值,而後疊加起來。公式以下:

Tensorflow:
  • CategoricalHinge[28]
tf.keras.losses.CategoricalHinge(reduction=losses_utils.ReductionV2.AUTO, name='categorical_hinge')公式:loss = maximum(neg - pos + 1, 0) where neg=maximum((1-y_true)*y_pred) and pos=sum(y_true*y_pred)參數: reduction:傳入tf.keras.losses.Reduction類型值,默認AUTO,定義對損失的計算方式。
  • categorical_hinge[29]
tf.keras.losses.categorical_hinge(y_true, y_pred)公式:loss = maximum(neg - pos + 1, 0) where neg=maximum((1-y_true)*y_pred) and pos=sum(y_true*y_pred)
  • Hinge[30]
tf.keras.losses.Hinge( reduction=losses_utils.ReductionV2.AUTO, name='hinge')公式:loss = maximum(1 - y_true * y_pred, 0),y_true值應爲-11。若是提供了二進制(01)標籤,會將其轉換爲-11參數: reduction:傳入tf.keras.losses.Reduction類型值,默認AUTO,定義對損失的計算方式。
  • hinge[31]
  
  
   
   
            
   
   
    
    
     
     
              
     
     
tf.keras.losses.hinge(y_true, y_pred)公式:loss = mean(maximum(1 - y_true * y_pred, 0), axis=-1)
  • SquaredHinge[32]
  
  
   
   
            
   
   

  
  
   
   
            
   
   
tf.keras.losses.SquaredHinge( reduction=losses_utils.ReductionV2.AUTO, name='squared_hinge')公式:loss = square(maximum(1 - y_true * y_pred, 0)),y_true值應爲-11。若是提供了二進制(01)標籤,會將其轉換爲-11參數: reduction:傳入tf.keras.losses.Reduction類型值,默認AUTO,定義對損失的計算方式。
  • squared_hinge[33]
  
  
   
   
            
   
   

  
  
   
   
            
   
   
tf.keras.losses.squared_hinge(y_truey_pred)公式:loss = mean(square(maximum(1 - y_true * y_pred, 0)), axis=-1)
PyTorch:
  • HingeEmbeddingLoss[34]:當  時,  ,當  時, 
  
  
   
   
            
   
   

  
  
   
   
            
   
   
torch.nn.HingeEmbeddingLoss(margin: float = 1.0, size_average=None, reduce=None, reduction: str = 'mean')參數: margin:float類型,默認爲1. size_average:bool類型,爲True時,返回的loss爲平均值,爲False時,返回的各樣本的loss之和 reduce:bool類型,返回值是否爲標量,默認爲True reduction-三個值,none: 不使用約簡;mean:返回loss和的平均值;sum:返回loss的和。默認:mean

06 餘弦類似度

餘弦類似度是機器學習中的一個重要概念,在Mahout等MLlib中有幾種經常使用的類似度計算方法,如歐氏類似度,皮爾遜類似度,餘弦類似度,Tanimoto類似度等。其中,餘弦類似度是其中重要的一種。餘弦類似度用向量空間中兩個向量夾角的餘弦值做爲衡量兩個個體間差別的大小。相比距離度量,餘弦類似度更加註重兩個向量在方向上的差別,而非距離或長度上。

餘弦類似度更多的是從方向上區分差別,而對絕對的數值不敏感,更多的用於使用用戶對內容評分來區分用戶興趣的類似度和差別,同時修正了用戶間可能存在的度量標準不統一的問題(由於餘弦類似度對絕對數值不敏感),公式以下:

Tensorflow:
  • CosineSimilarity[35]:請注意,所得值是介於-1和0之間的負數,其中0表示正交性,而接近-1的值表示更大的類似性。若是y_true或y_pred是零向量,則餘弦類似度將爲0,而與預測值和目標值之間的接近程度無關。
  
  
   
   
            
   
   

  
  
   
   
            
   
   
tf.keras.losses.CosineSimilarity(axis=-1, reduction=losses_utils.ReductionV2.AUTO, name='cosine_similarity')公式:loss = -sum(l2_norm(y_true) * l2_norm(y_pred))參數: axis:默認-1,沿其計算餘弦類似度的維 reduction:傳入tf.keras.losses.Reduction類型值,默認AUTO,定義對損失的計算方式。
  • cosine_similarity[36]
  
  
   
   
            
   
   
    
    
     
     
              
     
     
tf.keras.losses.cosine_similarity(y_true, y_pred, axis=-1)公式:loss = -sum(l2_norm(y_true) * l2_norm(y_pred))參數: axis:默認-1,沿其計算餘弦類似度的維
PyTorch:
  • CosineEmbeddingLoss[37]:當  時,  ,當  時, 
  
  
   
   
            
   
   

  
  
   
   
            
   
   
torch.nn.CosineEmbeddingLoss(margin: float = 0.0, size_average=None, reduce=None, reduction: str = 'mean')參數: margin:float類型,應爲-11之間的數字,建議爲00.5,默認值爲0 size_average:bool類型,爲True時,返回的loss爲平均值,爲False時,返回的各樣本的loss之和 reduce:bool類型,返回值是否爲標量,默認爲True reduction-三個值,none: 不使用約簡;mean:返回loss和的平均值;sum:返回loss的和。默認:mean

7 總結

上面這些損失函數是咱們在平常中常用到的,我將TensorFlow和PyTorch相關的API都貼出來了,也方便查看,能夠做爲一個手冊文章,須要的時候點出來看一下。還有一些其餘的損失函數,後續也會都加進來。


外鏈地址:

[1] https://www.tensorflow.org/api_docs/python/tf/keras/losses/BinaryCrossentropy

[2] https://www.tensorflow.org/api_docs/python/tf/keras/losses/binary_crossentropy

[3] https://www.tensorflow.org/api_docs/python/tf/keras/losses/CategoricalCrossentropy

[4] https://www.tensorflow.org/api_docs/python/tf/keras/losses/categorical_crossentropy

[5] https://www.tensorflow.org/api_docs/python/tf/keras/losses/SparseCategoricalCrossentropy

[6] https://www.tensorflow.org/api_docs/python/tf/keras/losses/sparse_categorical_crossentropy

[7] https://pytorch.org/docs/stable/generated/torch.nn.BCELoss.html

[8] https://pytorch.org/docs/stable/generated/torch.nn.BCEWithLogitsLoss.html

[9] https://pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html

[10] https://www.tensorflow.org/api_docs/python/tf/keras/losses/KLD

[11] https://www.tensorflow.org/api_docs/python/tf/keras/losses/KLDivergence

[12] https://pytorch.org/docs/stable/generated/torch.nn.KLDivLoss.html

[13] https://www.tensorflow.org/api_docs/python/tf/keras/losses/MAE

[14] https://www.tensorflow.org/api_docs/python/tf/keras/losses/MeanAbsoluteError

[15] https://www.tensorflow.org/api_docs/python/tf/keras/losses/MeanAbsolutePercentageError

[16] https://www.tensorflow.org/api_docs/python/tf/keras/losses/MAPE

[17] https://www.tensorflow.org/api_docs/python/tf/keras/losses/Huber

[18] https://pytorch.org/docs/stable/generated/torch.nn.L1Loss.html

[19] https://pytorch.org/docs/stable/nn.functional.html?highlight=loss#torch.nn.functional.l1_loss

[20] https://pytorch.org/docs/stable/generated/torch.nn.SmoothL1Loss.html

[21] https://pytorch.org/docs/stable/nn.functional.html?highlight=loss#torch.nn.functional.smooth_l1_loss

[22] https://www.tensorflow.org/api_docs/python/tf/keras/losses/MeanSquaredError

[23] https://www.tensorflow.org/api_docs/python/tf/keras/losses/MSE

[24] https://www.tensorflow.org/api_docs/python/tf/keras/losses/MeanSquaredLogarithmicError

[25] https://www.tensorflow.org/api_docs/python/tf/keras/losses/MSLE

[26] https://pytorch.org/docs/stable/generated/torch.nn.MSELoss.html

[27] https://pytorch.org/docs/stable/nn.functional.html?highlight=loss#torch.nn.functional.mse_loss

[28] https://www.tensorflow.org/api_docs/python/tf/keras/losses/CategoricalHinge

[29] https://www.tensorflow.org/api_docs/python/tf/keras/losses/categorical_hinge

[30] https://www.tensorflow.org/api_docs/python/tf/keras/losses/Hinge

[31] https://www.tensorflow.org/api_docs/python/tf/keras/losses/hinge

[32] https://www.tensorflow.org/api_docs/python/tf/keras/losses/SquaredHinge

[33] https://www.tensorflow.org/api_docs/python/tf/keras/losses/squared_hinge

[34] https://pytorch.org/docs/stable/generated/torch.nn.HingeEmbeddingLoss.html

[35] https://www.tensorflow.org/api_docs/python/tf/keras/losses/CosineSimilarity

[36] https://www.tensorflow.org/api_docs/python/tf/keras/losses/cosine_similarity

[37] https://pytorch.org/docs/stable/generated/torch.nn.CosineEmbeddingLoss.html

以爲有用麻煩給個在看啦~   

本文分享自微信公衆號 - 視學算法(visualAlgorithm)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索