tf 損失函式 TensorFlow裡面損失函式

2021-10-13 05:54:46 字數 1811 閱讀 3274

2.交叉熵

交叉熵(crossentropy)也是loss演算法的一種,一般用在分類問題上,表達的意識為**輸入樣本屬於某一類的概率 。其表示式如下,其中y代表真實值分類(0或1),a代表**值。

在tensorflow中常見的交叉熵函式有:

sigmoid交叉熵;

softmax交叉熵;

sparse交叉熵;

加權sigmoid交叉熵。

圖:在tensorflow裡常用的損失函式如表所示。

當然,也可以像mse那樣使用自己組合的公式計算交叉熵,舉例,對於softmax後的結果logits我們可以對其使用公式-tf.reduce_sum(labels*tf.log(logits),1),就等同於softmax_cross_entropy_with_logits得到的結果。

import tensorflow as tf

labels = [[0, 0, 1], [0, 1, 0]]

logits = [[2, 0.5, 6], [0.1, 0, 3]]

logits_scaled = tf.nn.softmax(logits)

logits_scaled2 = tf.nn.softmax(logits_scaled)

result1 = tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits)

result2 = tf.nn.softmax_cross_entropy_with_logits(labels=labels, logits=logits_scaled)

result3 = -tf.reduce_sum(labels * tf.log(logits_scaled), 1)

with tf.session() as sess:

print("scaled=", sess.run(logits_scaled))

print("scaled2=", sess.run(logits_scaled2))

# 經過第二次的softmax後,分布概率會有變化

print("rel1=", sess.run(result1), "\n") # 正確的方式

print("rel2=", sess.run(result2), "\n")

# 如果將softmax變換完的值放進去會,就相當於算第二次softmax的loss,所以會出錯

print("rel3=", sess.run(result3))

執行上面**,輸出結果如下:

scaled= [[ 0.01791432 0.00399722 0.97808844]

[ 0.04980332 0.04506391 0.90513283]]

scaled2= [[ 0.21747023 0.21446465 0.56806517]

[ 0.2300214 0.22893383 0.54104471]]

rel1= [ 0.02215516 3.09967351]

rel2= [ 0.56551915 1.47432232]

rel3= [ 0.02215518 3.09967351]

下面開始驗證下前面所說的實驗:

比較scaled和scaled2可以看到:經過第二次的softmax後,分布概率會有變化,而scaled才是我們真實轉化的softmax值。

比較rel1和rel2可以看到:傳入softmax_cross_entropy_with_logits的logits是不需要進行softmax的。如果將softmax後的值scaled傳入softmax_cross_entropy_with_logits就相當於進行了兩次的softmax轉換。

tf學習(四) 損失函式

經典的損失函式有四種,也可以自己定義損失函式 有幾種不同的代價函式,不同的代價函式適用於不同的場景 有二次代價函式,交叉熵代價函式 適用於s型曲線,選擇合適的代價函式,可節省訓練時間 對數似然代價函式 loss tf.reduce mean tf.square y prediction 計算公式如下...

損失函式 損失函式 Hinge

本文討論hinge損失函式,該函式是機器學習中常用的損失函式之一。在機器學習中,hinge loss是一種損失函式,它通常用於 maximum margin 的分類任務中,如支援向量機。數學表示式為 其中 表示 輸出,通常都是軟結果 就是說輸出不是0,1這種,可能是0.87。表示正確的類別。其函式影...

常見損失函式 損失函式選擇方法

神經網路的學習通過某個指標表示現在的狀態,然後以這個指標為基準,尋找最優權重引數,這個指標就是損失函式 loss function 如上介紹,神經網路損失函式 loss function 也叫目標函式 objective function 的作用 衡量神經網路的輸出與預期值之間的距離,以便控制 調節...