只是为了记录下如何选择损失函数,把公式贴上来了,有些损失函数的公式没找到,以后找到了再贴上来。
损失函数是模型优化的目标,所以又叫目标函数、优化评分函数,在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:
L=1n∑i=1n(y(i)pred−y(i)true)2 L = 1 n ∑ i = 1 n ( y p r e d ( i ) − y t r u e ( i ) ) 2
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:
L=1n∑i=1n|(y(i)pred−y(i)true)| L = 1 n ∑ i = 1 n | ( y p r e d ( i ) − y t r u e ( i ) ) |
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:
L=1