Keras深度學習框架之損失函式

2022-05-06 13:03:12 字數 2316 閱讀 6053

損失函式【也稱目標函式或優化評分函式】是編譯模型時所需的兩個引數之一。

model.compile(loss='mean_squared_error', optimizer='sgd')

或from keras import losses

model.compile(loss=losses.mean_squared_error, optimizer='sgd')

可以傳遞乙個現有的損失函式名或者乙個tensorflow/theano符號函式。該符號函式為每個資料點返回乙個標量,有一下兩個引數:

1.y_true

真實標籤,tensorflow/theano張量。

2.y_pred

**值,tensorflow/theano張量,其shape與y_true相同。

實際的優化目標是所有資料點的輸出陣列的平均值。

計算公式:

原始碼:提到mae就不能不說顯著性目標檢測,所謂顯著性目標,舉個例子來說,當我們觀察一張時,我們會首先關注那些顏色鮮明,奪人眼球的內容。就像我們看變形金剛時會首先看擎天柱一樣,這是絕對的c位。所以我們把變形金剛中的擎天柱定義為顯著性目標。

在顯著性目標檢測中的評價指標計算中,常用的檢測演算法就有平均絕對誤差,其計算公式如下:

原始碼:與平均絕對誤差類似,平均絕對百分比誤差**結果與真實值之間的偏差比例。計算公式如下:

原始碼:

備註:1.clip

逐元素,將超出指定範圍的數強制變為邊界數。

2.epsilon

固定引數,預設值為1*e-7。

在計算均方誤差之前先對資料取對數,再計算。

計算公式:

原始碼:

計算公式:

原始碼:計算公式:

原始碼:原始碼:

**誤差的雙曲余弦的對數。計算結果與均方誤差大致相同,但不會受到偶爾瘋狂的錯誤**的強烈影響。

原始碼:

當使用categorical_crossentropy損失時,目標值應該是分類格式【即假如是10類,那麼每個樣本的目標值應該是乙個10維的向量,這個向量除了表示類別的那個索引為1,其它均為0】。為了將整數目標值轉換為分類目標值,可以使用keras實用函式to_categorical。

from keras.utils.np_utils import to_categorical

categorical_labels = to_categorical(int_labels, num_classes=none)

原始碼:原始碼:

原始碼:原始碼:

計算公式:

原始碼:計算公式:

原始碼:原始碼:

在每個批處理元素上執行ctc損失演算法。

引數:1.y_true

包含真實值標籤的張量。型別(samples, max_string_length).

2.y_pred

包含**值或softmax輸出的張量。型別(samples, time_steps, num_categories)。

3.input_length

張量(samples, 1),包含y_pred中每個批處理項的序列長度。

4.label_length

張量(samples, 1), 包含y_true中每個批處理項的序列長度。

返回shape為(samples, 1)的張量,包含每乙個元素的ctc損失。

深度學習的框架之keras

老早之前寫過一些深度學習框架的常識。但是太不具體了。這次出乙個系列的,今天就單獨寫keras的相關知識。張量概念介紹 張量概念是向量概念和矩陣概念的推廣,標量是零階張量,向量是一階張量,矩陣 方陣 是二階張量,而三階張量則好比立體矩陣,兩個張量的點積就是將a張量的最後乙個軸中的所有元素,與b張量中倒...

深度學習 Keras 層及損失函式

python深度學習 第三章神經網路入門部分內容,有關神經網路的層和損失函式選取。一 層的選取 1.2d張量,選取全連線層,也叫密集連線層,keras中對應dense,例如像神經網路中加入乙個512輸入,32輸出的dense層 network.add layers.dense 32,input sh...

深度學習 Keras 層及損失函式

python深度學習 第三章神經網路入門部分內容,有關神經網路的層和損失函式選取。一 層的選取 1.2d張量,選取全連線層,也叫密集連線層,keras中對應dense,例如像神經網路中加入乙個512輸入,32輸出的dense層 network.add layers.dense 32,input sh...