損失函數【也稱目標函數或優化評分函數】是編譯模型時所需的兩個參數之一。算法
model.compile(loss='mean_squared_error', optimizer='sgd')數組
或函數
from keras import losses性能
model.compile(loss=losses.mean_squared_error, optimizer='sgd')優化
能夠傳遞一個現有的損失函數名或者一個TensorFlow/Theano符號函數。該符號函數爲每一個數據點返回一個標量,有一下兩個參數:spa
1.y_trueblog
真實標籤,TensorFlow/Theano張量。索引
2.y_pred圖片
預測值,TensorFlow/Theano張量,其shape與y_true相同。ip
實際的優化目標是全部數據點的輸出數組的平均值。
計算公式:
源碼:
提到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損失。