当前位置:   article > 正文

keras中 损失函数 与 评价函数 详解_损失函数和评价函数区别

损失函数和评价函数区别

1.   损失函数  loss

损失函数(或称目标函数、优化评分函数)是编译模型时所需的两个参数之一:

model.compile(loss='mean_squared_error', optimizer='sgd')
  1. from keras import losses
  2. model.compile(loss=losses.mean_squared_error, optimizer='sgd')

(1)mean_squared_error / mse

均方误差,常用的目标函数,公式为((y_pred-y_true)**2).mean()

  1. def mean_squared_error(y_true, y_pred):
  2. return K.mean(K.square(y_pred - y_true), axis=-1)

(2)mean_absolute_error / mae

绝对值均差,公式为(|y_pred-y_true|).mean()

  1. def mean_absolute_error(y_true, y_pred):
  2. return K.mean(K.abs(y_pred - y_true), axis=-1)


(3) mean_absolute_percentage_error / mape

公式为:(|(y_true - y_pred) / clip((|y_true|),epsilon, infinite)|).mean(axis=-1) * 100,和mae的区别就是,累加的是(预测值与实际值的差)除以(剔除不介于epsilon和infinite之间的实际值),然后求均值。

  1. def mean_absolute_percentage_error(y_true, y_pred):
  2. diff = K.abs((y_true - y_pred) / K.clip(K.abs(y_true),
  3. K.epsilon(),
  4. None))
  5. return 100. * K.mean(diff, axis=-1)


(4)mean_squared_logarithmic_error / msle

公式为: (log(clip(y_pred, epsilon, infinite)+1)- log(clip(y_true, epsilon,infinite)+1.))^2.mean(axis=-1),这个就是加入了log对数,剔除不介于epsilon和infinite之间的预测值与实际值之后,然后取对数,作差,平方,累加求均值。

  1. def mean_squared_logarithmic_error(y_true, y_pred):
  2. first_log = K.log(K.clip(y_pred, K.epsilon(), None) + 1.)
  3. second_log = K.log(K.clip(y_true, K.epsilon(), None) + 1.)
  4. return K.mean(K.square(first_log - second_log), axis=-1)


(5)squared_hinge

公式为:(max(1-y_truey_pred,0))^2.mean(axis=-1),取1减去预测值与实际值乘积的结果与0比相对大的值的平方的累加均值。

  1. def squared_hinge(y_true, y_pred):
  2. return K.mean(K.square(K.maximum(1. - y_true * y_pred, 0.)), axis=-1)


(6)hinge

公式为:(max(1-y_true*y_pred,0)).mean(axis=-1),取1减去预测值与实际值乘积的结果与0比相对大的值的的累加均值。

  1. def hinge(y_true, y_pred):
  2. return K.mean(K.maximum(1. - y_true * y_pred, 0.), axis=-1)


(7)binary_crossentropy

 常说的逻辑回归, 就是常用的交叉熵函

  1. def binary_crossentropy(y_true, y_pred):
  2. return K.mean(K.binary_crossentropy(y_true, y_pred), axis=-1)


(8)categorical_crossentropy

 多分类的逻辑

  1. def categorical_crossentropy(y_true, y_pred):
  2. return K.categorical_crossentropy(y_true, y_pred)

2.   性能评估函数

评价函数用于评估当前训练模型的性能。当模型编译后(compile),评价函数应该作为 metrics的参数来输入。

  1. model.compile(loss='mean_squared_error',
  2. optimizer='sgd',
  3. metrics=['mae', 'acc'])
  1. from keras import metrics
  2. model.compile(loss='mean_squared_error',
  3. optimizer='sgd',
  4. metrics=[metrics.mae, metrics.categorical_accuracy])

评价函数和 损失函数 相似,只不过评价函数的结果不会用于训练过程中。

我们可以传递已有的评价函数名称,或者传递一个自定义的 Theano/TensorFlow 函数来使用(查阅自定义评价函数)。

 

(1)binary_accuracy:

对二分类问题,计算在所有预测值上的平均正确率


(2)categorical_accuracy

对多分类问题,计算再所有预测值上的平均正确率


(3)sparse_categorical_accuracy

与categorical_accuracy相同,在对稀疏的目标值预测时有用


(4)top_k_categorical_accracy

计算top-k正确率,当预测值的前k个值中存在目标类别即认为预测正确


(5)sparse_top_k_categorical_accuracy

与top_k_categorical_accracy作用相同,但适用于稀疏情况
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/133180
推荐阅读
相关标签
  

闽ICP备14008679号