keras中的损失函数
Posted somTian
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keras中的损失函数相关的知识,希望对你有一定的参考价值。
只是为了记录下如何选择损失函数,把公式贴上来了,有些损失函数的公式没找到,以后找到了再贴上来。
损失函数是模型优化的目标,所以又叫目标函数、优化评分函数,在keras中,模型编译的参数loss指定了损失函数的类别,有两种指定方法:
model.compile(loss='mean_squared_error', optimizer='sgd')
或者
from keras import losses
model.compile(loss=losses.mean_squared_error, optimizer='sgd')
你可以传递一个现有的损失函数名,或者一个TensorFlow/Theano符号函数。 该符号函数为每个数据点返回一个标量,有以下两个参数:
- y_true: 真实标签. TensorFlow/Theano张量
- y_pred: 预测值. TensorFlow/Theano张量,其shape与y_true相同
实际的优化目标是所有数据点的输出数组的平均值。
mean_squared_error
mean_squared_error(y_true, y_pred)
源码:
def mean_squared_error(y_true, y_pred):
return K.mean(K.square(y_pred - y_true), axis=-1)
说明:
MSE:
mean_absolute_error
mean_absolute_error(y_true, y_pred)
源码:
def mean_absolute_error(y_true, y_pred):
return K.mean(K.abs(y_pred - y_true), axis=-1)
说明:
MAE:
mean_absolute_percentage_error
mean_absolute_percentage_error(y_true, y_pred)
源码:
def mean_absolute_percentage_error(y_true, y_pred):
diff = K.abs((y_true - y_pred) / K.clip(K.abs(y_true),
K.epsilon(),
None))
return 100. * K.mean(diff, axis=-1)
说明:
MAPE:
mean_squared_logarithmic_error
mean_squared_logarithmic_error(y_true, y_pred)
源码:
def mean_squared_logarithmic_error(y_true, y_pred):
first_log = K.log(K.clip(y_pred, K.epsilon(), None) + 1.)
second_log = K.log(K.clip(y_true, K.epsilon(), None) + 1.)
return K.mean(K.square(first_log - second_log), axis=-1)
说明:
MSLE:
squared_hinge
squared_hinge(y_true, y_pred)
源码:
def squared_hinge(y_true, y_pred):
return K.mean(K.square(K.maximum(1. - y_true * y_pred, 0.)), axis=-1)
L=1n∑i=1n(max(0,1−y(i)pred⋅y(i)true))2 L = 1 n ∑ i = 1 n ( m a x ( 0 , 1 − y p r e d ( i ) ⋅ y t r u e ( i ) ) ) 2
hinge
hinge(y_true, y_pred)
源码:
def hinge(y_true, y_pred):
return K.mean(K.maximum(1. - y_true * y_pred, 0.), axis=-1)
说明:
keras 中的输入形状(此损失期望目标具有与输出相同的形状)