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

2021-02-20 機器學習研究組訂閱
本文打算討論在深度學習中常用的十餘種損失函數(含變種),結合PyTorch和TensorFlow2對其概念、公式及用途進行闡述,希望能達到看過的夥伴對各種損失函數有個大致的了解以及使用。本文對原理只是淺嘗輒止,不進行深挖,感興趣的夥伴可以針對每個部分深入翻閱資料。01 交叉熵損失(CrossEntropyLoss)

對於單事件的信息量而言,當事件發生的概率越大時,信息量越小,需要明確的是,信息量是對於單個事件來說的,實際事件存在很多種可能,所以這個時候熵就派上用場了,熵是表示隨機變量不確定的度量,是對所有可能發生的事件產生的信息量的期望。交叉熵用來描述兩個分布之間的差距,交叉熵越小,假設分布離真實分布越近,模型越好。

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

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

其中,  表示樣本  的標籤,正類為1,負類為0,  表示樣本  預測為正的概率。其中,  表示類別的數量,  表示變量(0或1),如果該類別和樣本  的類別相同就是1,否則是0,  表示對於觀測樣本  屬於類別  的預測概率。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,定義對損失的計算方式。

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,計算交叉熵的維度

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)的作用。

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

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

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

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

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

聯繫上面的交叉熵,我們可以將公式簡化為(KL散度 = 交叉熵 - 熵):

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

KLD | kullback_leibler_divergence[10]
tf.keras.losses.KLD(y_true, y_pred)

tf.keras.losses.KLDivergence(reduction=losses_utils.ReductionV2.AUTO, name='kl_divergence')參數:  reduction:傳入tf.keras.losses.Reduction類型值,默認AUTO,定義對損失的計算方式。

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,指定是否在日誌空間中傳遞目標

L1範數損失函數,也被稱為最小絕對值偏差(LAD),最小絕對值誤差(LAE)。總的說來,它是把目標值  與估計值  的絕對差值的總和  最小化:
梯度恆定,不論預測值是否接近真實值,這很容易導致發散,或者錯過極值點。導數不連續,導致求解困難。這也是L1損失函數不廣泛使用的主要原因。收斂速度比L2損失函數要快,這是通過對比函數圖像得出來的,L1能提供更大且穩定的梯度。MAE | mean_absolute_error[13]
tf.keras.losses.MAE(y_true, y_pred)

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)

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,定義對損失的計算方式。

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

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損耗之間切換的閾值

torch.nn.functional.smooth_l1_loss(input, target, size_average=None, reduce=None, reduction='mean', beta=1.0)

L2範數損失函數,也被稱為最小平方誤差(LSE)。總的來說,它是把目標值  與估計值  的差值的平方和  最小化:
收斂速度比L1慢,因為梯度會隨著預測值接近真實值而不斷減小。對異常數據比L1敏感,這是平方項引起的,異常數據會引起很大的損失。它使訓練更容易,因為它的梯度隨著預測值接近真實值而不斷減小,那麼它不會輕易錯過極值點,但也容易陷入局部最優。它的導數具有封閉解,優化和編程非常容易,所以很多回歸任務都是用MSE作為損失函數。
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_true, y_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)

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

torch.nn.functional.mse_loss(input, target, size_average=None, reduce=None, reduction='mean')

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

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)

tf.keras.losses.Hinge(    reduction=losses_utils.ReductionV2.AUTO, name='hinge')公式:loss = maximum(1 - y_true * y_pred, 0),y_true值應為-1或1。如果提供了二進位(0或1)標籤,會將其轉換為-1或1參數:  reduction:傳入tf.keras.losses.Reduction類型值,默認AUTO,定義對損失的計算方式。

tf.keras.losses.hinge(y_true, y_pred)公式:loss = mean(maximum(1 - y_true * y_pred, 0), axis=-1)

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

tf.keras.losses.squared_hinge(y_true, y_pred)公式:loss = mean(square(maximum(1 - y_true * y_pred, 0)), axis=-1)

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

餘弦相似度是機器學習中的一個重要概念,在Mahout等MLlib中有幾種常用的相似度計算方法,如歐氏相似度,皮爾遜相似度,餘弦相似度,Tanimoto相似度等。其中,餘弦相似度是其中重要的一種。餘弦相似度用向量空間中兩個向量夾角的餘弦值作為衡量兩個個體間差異的大小。相比距離度量,餘弦相似度更加注重兩個向量在方向上的差異,而非距離或長度上。餘弦相似度更多的是從方向上區分差異,而對絕對的數值不敏感,更多的用於使用用戶對內容評分來區分用戶興趣的相似度和差異,同時修正了用戶間可能存在的度量標準不統一的問題(因為餘弦相似度對絕對數值不敏感),公式如下: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,定義對損失的計算方式。

tf.keras.losses.cosine_similarity(y_true, y_pred, axis=-1)公式:loss = -sum(l2_norm(y_true) * l2_norm(y_pred))參數:  axis:默認-1,沿其計算餘弦相似度的維

CosineEmbeddingLoss[37]:當  時,  ,當  時, 

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

上面這些損失函數是我們在日常中經常使用到的,我將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

想要了解更多資訊,請掃描下方二維碼,關注機器學習研究會

                                          

轉自:極市平臺

相關焦點

  • 【綜述專欄】損失函數理解匯總,結合PyTorch和TensorFlow2
    地址:https://www.zhihu.com/people/dengbocong本文打算討論在深度學習中常用的十餘種損失函數(含變種),結合PyTorch和TensorFlow2對其概念、公式及用途進行闡述,希望能達到看過的夥伴對各種損失函數有個大致的了解以及使用。本文對原理只是淺嘗輒止,不進行深挖,感興趣的夥伴可以針對每個部分深入翻閱資料。
  • 損失函數理解匯總,結合 PyTorch1.7 和 TensorFlow2
    本文打算討論在深度學習中常用的十餘種損失函數(含變種),結合PyTorch和TensorFlow2對其概念、公式及用途進行闡述,希望能達到看過的夥伴對各種損失函數有個大致的了解以及使用。本文對原理只是淺嘗輒止,不進行深挖,感興趣的夥伴可以針對每個部分深入翻閱資料。
  • GitHub趨勢榜第一:TensorFlow+PyTorch深度學習資源大匯總
    的各種深度學習架構,模型和技巧的集合。本文搜集整理了Jupyter Notebook中TensorFlow和PyTorch的各種深度學習架構,模型和技巧,內容非常豐富,適用於Python 3.7,適合當做工具書。大家可以將內容按照需要進行分割,列印出來,或者做成電子書等,隨時查閱。
  • TensorFlow2.0(8):誤差計算——損失函數總結
    import tensorflow as tfy = tf.random.uniform((5,),maxval=5,dtype=tf.int32) # 假設這是真實值print(y)y = tf.one_hot(y,depth=5) # 轉為熱獨編碼print(y)tf.Tensor([2 4 4 0 2],
  • 深度學習環境配置指南:Pytorch、TensorFlow、Keras
    導讀本文介紹了作者使用RTX3090進行深度學習環境配置pytorch、tensorflow、keras等的詳細過程及代碼。筆者中山大學研究生,醫學生+計科學生的集合體,機器學習愛好者。-0.26.0+nv20.10-cp36-cp36m-linux_x86_64.whl nvidia_nccl-2.7.8-cp36-cp36m-linux_x86_64.whl nvidia_tensorrt-7.2.1.4-cp36-none-linux_x86_64.whl tensorflow_estimator-1.15.1-py2.py3-none-any.whl nvidia_tensorboard
  • RTX 3090 的深度學習環境配置指南:Pytorch、TensorFlow、Keras
    導讀本文介紹了作者使用RTX3090進行深度學習環境配置pytorch、tensorflow、keras等的詳細過程及代碼。筆者中山大學研究生,醫學生+計科學生的集合體,機器學習愛好者。,一般用py37或py38(以下都在虛擬環境中操作)conda create -n exp38 python==3.8conda activate exp38(4)安裝cuda11.0和pytorch1.7(不用再
  • 寫給純小白的深度學習環境搭建寶典:pytorch+tensorflow
    Anaconda+pytorch環境準備如果你的電腦帶有GPU,可以先安裝Nvidia驅動 + cuda + cudnn,然後再搭建環境,這樣可以達到更高的運行速度。如果不想使用GPU,學習階段也可以使用cpu版本,對於簡單的程序用CPU和GPU其實沒差別。
  • 初學AI神經網絡應該選擇Keras或是Pytorch框架?
    其中神經網絡的各個層需要單獨定義,還有一些激活函數、損失函數等概念。看到這些對於一個AI剛入門的開發者確實有些茫然。keras是google的一個大佬開發的一個高度封裝的模型框架,已開源到github上。
  • 上線倆月,TensorFlow 2.0被吐槽太難用,網友:看看人家PyTorch
    一些人表示,TF1.x 版本儘管學習成本很高,但是(教程)是非常連貫的,況且還有 tensor2tensor 這樣的代碼庫,使得舊版本的使用並不是那麼困難。官方教程缺失使得社區只好自力更生,很多人不得不去其他渠道尋找相關教程和指南。但是非官方的教程也不一定靠譜。
  • 擴展之Tensorflow2.0 | 19 TF2模型的存儲與載入
    擴展之Tensorflow2.0 | 18 TF2構建自定義模型擴展之Tensorflow2.0
  • tensorflow源碼解析之seq2seq.py文件(上)
    一、前言自從接觸並學習tensorflow框架之後,總是會遇到很多莫名奇妙的報錯信息。而網上又很少有相似的問題的解決方案。因此很久之前就想學一下tendorflow的源碼,能夠深層次的理解tensorflow這個框架。但是由於一些原因耽擱了。
  • 最全的損失函數匯總
    公眾號關注 「ML_NLP」作者:mingo_敏編輯:深度學習自然語言處理連結:https://blog.csdn.net/shanglianlm/article/details/85019768tensorflow
  • Tensorflow常用函數使用說明及實例簡記
    本文記錄Tensorflow中常用函數功能,方便大家使用時查詢!
  • PyTorch稱霸頂會:CVPR論文佔比是TensorFlow 4 倍
    最近,隨著 ICLR 2020 和 CVPR 2020 會議的相繼結束,前 PyTorch 實習生、一直致力於研究機器學習領域深度學習框架發展趨勢的學者 Horace He 更新了 ICLR 2020 和 CVPR 2020 接收論文中 PyTorch 和 TensorFlow 的使用及相關佔比,結果顯示:在 ICLR 2020 和 CVPR 2020 會議中
  • Pytorch還是TensorFlow?頂會帶你覽趨勢
    最近,隨著 ICLR 2020 和 CVPR 2020 會議的相繼結束,前 PyTorch 實習生、一直致力於研究機器學習領域深度學習框架發展趨勢的學者 Horace He 更新了 ICLR 2020 和 CVPR 2020 接收論文中 PyTorch 和 TensorFlow 的使用及相關佔比,結果顯示:在 ICLR 2020 和 CVPR 2020 會議中,使用 PyTorch 的論文數遠超 TensorFlow
  • TensorFlow極速入門
    最後給出了在 tensorflow 中建立一個機器學習模型步驟,並用一個手寫數字識別的例子進行演示。1、tensorflow是什麼?tensorflow 是 google 開源的機器學習工具,在2015年11月其實現正式開源,開源協議Apache 2.0。
  • tensorflow極速入門
    最後給出了在 tensorflow 中建立一個機器學習模型步驟,並用一個手寫數字識別的例子進行演示。1、 tensorflow是什麼?tensorflow 是 google 開源的機器學習工具,在2015年11月其實現正式開源,開源協議Apache 2.0。下圖是 query 詞頻時序圖,從中可以看出 tensorflow 的火爆程度。
  • PyTorch 學習筆記(六):PyTorch的十七個損失函數
    項目代碼:https://github.com/tensor-yu/PyTorch_Tutorial系列回顧:我們所說的優化,即優化網絡權值使得損失函數值變小。但是,損失函數值變小是否能代表模型的分類/回歸精度變高呢?那麼多種損失函數,應該如何選擇呢?
  • 深度學習100+經典模型TensorFlow與Pytorch代碼實現大集合
    rasbt在Github上整理了關於深度學習模型TensorFlow和Pytorch代碼實現集合,含有100個,各種各樣的深度學習架構,模型,和技巧的集合Jupyter Notebooks,從基礎的邏輯回歸到神經網絡到CNN到GNN等,可謂一網打盡,值得收藏!
  • PyTorch,TensorFlow和NumPy中Stack Vs Concat | PyTorch系列(二十四)
    這是堆疊和串聯之間的區別。但是,這裡的描述有些棘手,因此讓我們看一些示例,以了解如何更好地理解這一點。我們將研究在PyTorch,TensorFlow和NumPy中的堆棧和串聯。我們開始做吧。在大多數情況下,沿著張量的現有軸進行連接非常簡單。