Keras之自定義損失(loss)函數(shù)用法說明
在Keras中可以自定義損失函數(shù),在自定義損失函數(shù)的過程中需要注意的一點(diǎn)是,損失函數(shù)的參數(shù)形式,這一點(diǎn)在Keras中是固定的,須如下形式:
def my_loss(y_true, y_pred): # y_true: True labels. TensorFlow/Theano tensor # y_pred: Predictions. TensorFlow/Theano tensor of the same shape as y_true . . . return scalar #返回一個標(biāo)量值
然后在model.compile中指定即可,如:
model.compile(loss=my_loss, optimizer='sgd')
具體參考Keras官方metrics的定義keras/metrics.py:
"""Built-in metrics.
"""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import six
from . import backend as K
from .losses import mean_squared_error
from .losses import mean_absolute_error
from .losses import mean_absolute_percentage_error
from .losses import mean_squared_logarithmic_error
from .losses import hinge
from .losses import logcosh
from .losses import squared_hinge
from .losses import categorical_crossentropy
from .losses import sparse_categorical_crossentropy
from .losses import binary_crossentropy
from .losses import kullback_leibler_divergence
from .losses import poisson
from .losses import cosine_proximity
from .utils.generic_utils import deserialize_keras_object
from .utils.generic_utils import serialize_keras_object
def binary_accuracy(y_true, y_pred):
return K.mean(K.equal(y_true, K.round(y_pred)), axis=-1)
def categorical_accuracy(y_true, y_pred):
return K.cast(K.equal(K.argmax(y_true, axis=-1),
K.argmax(y_pred, axis=-1)),
K.floatx())
def sparse_categorical_accuracy(y_true, y_pred):
# reshape in case it's in shape (num_samples, 1) instead of (num_samples,)
if K.ndim(y_true) == K.ndim(y_pred):
y_true = K.squeeze(y_true, -1)
# convert dense predictions to labels
y_pred_labels = K.argmax(y_pred, axis=-1)
y_pred_labels = K.cast(y_pred_labels, K.floatx())
return K.cast(K.equal(y_true, y_pred_labels), K.floatx())
def top_k_categorical_accuracy(y_true, y_pred, k=5):
return K.mean(K.in_top_k(y_pred, K.argmax(y_true, axis=-1), k), axis=-1)
def sparse_top_k_categorical_accuracy(y_true, y_pred, k=5):
# If the shape of y_true is (num_samples, 1), flatten to (num_samples,)
return K.mean(K.in_top_k(y_pred, K.cast(K.flatten(y_true), 'int32'), k),
axis=-1)
# Aliases
mse = MSE = mean_squared_error
mae = MAE = mean_absolute_error
mape = MAPE = mean_absolute_percentage_error
msle = MSLE = mean_squared_logarithmic_error
cosine = cosine_proximity
def serialize(metric):
return serialize_keras_object(metric)
def deserialize(config, custom_objects=None):
return deserialize_keras_object(config,
module_objects=globals(),
custom_objects=custom_objects,
printable_module_name='metric function')
def get(identifier):
if isinstance(identifier, dict):
config = {'class_name': str(identifier), 'config': {}}
return deserialize(config)
elif isinstance(identifier, six.string_types):
return deserialize(str(identifier))
elif callable(identifier):
return identifier
else:
raise ValueError('Could not interpret '
'metric function identifier:', identifier)
以上這篇Keras之自定義損失(loss)函數(shù)用法說明就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
超詳細(xì)注釋之OpenCV按位AND OR XOR和NOT
這篇文章主要介紹了OpenCV按位AND OR XOR和NOT運(yùn)算,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09
python多維列表總是只轉(zhuǎn)為一維數(shù)組問題解決
這篇文章主要為大家介紹了python多維列表總是只轉(zhuǎn)為一維數(shù)組問題解決實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
python通過安裝itchat包實(shí)現(xiàn)微信自動回復(fù)收到的春節(jié)祝福
這篇文章主要介紹了python通過安裝itchat包實(shí)現(xiàn)微信自動回復(fù)收到的春節(jié)祝福,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下吧2020-01-01
python列表使用實(shí)現(xiàn)名字管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python列表使用實(shí)現(xiàn)名字管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01
python opencv 圖像處理之圖像算數(shù)運(yùn)算及修改顏色空間
這篇文章主要介紹了python opencv 圖像處理之圖像算數(shù)運(yùn)算及修改顏色空間,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-08-08
用Python爬取各大高校并可視化幫弟弟選大學(xué),弟弟直呼牛X
高考結(jié)束了,接下來最重要的就是玩玩玩,然后準(zhǔn)備報志愿吧.中國教育在線網(wǎng)顯示國內(nèi)目前共有2857所高等院校,報一個理想的學(xué)校簡直是千里挑一.正好表弟求著我讓我?guī)退x學(xué)校,我想著十年寒窗苦讀也不容易不如就用python幫幫他.分析一下目前國內(nèi)的大學(xué),需要的朋友可以參考下2021-06-06

