赞
踩
损失函数(或称目标函数、优化评分函数)是编译模型时所需的两个参数之一:
model.compile(loss='mean_squared_error', optimizer='sgd')
- from keras import losses
-
- model.compile(loss=losses.mean_squared_error, optimizer='sgd')
(1)mean_squared_error / mse
均方误差,常用的目标函数,公式为((y_pred-y_true)**2).mean()
- def mean_squared_error(y_true, y_pred):
- return K.mean(K.square(y_pred - y_true), axis=-1)
(2)mean_absolute_error / mae
绝对值均差,公式为(|y_pred-y_true|).mean()
- def mean_absolute_error(y_true, y_pred):
- 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之间的实际值),然后求均值。
- 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)
(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之间的预测值与实际值之后,然后取对数,作差,平方,累加求均值。
- 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)
(5)squared_hinge
公式为:(max(1-y_truey_pred,0))^2.mean(axis=-1),取1减去预测值与实际值乘积的结果与0比相对大的值的平方的累加均值。
- def squared_hinge(y_true, y_pred):
- 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比相对大的值的的累加均值。
- def hinge(y_true, y_pred):
- return K.mean(K.maximum(1. - y_true * y_pred, 0.), axis=-1)
(7)binary_crossentropy
常说的逻辑回归, 就是常用的交叉熵函
- def binary_crossentropy(y_true, y_pred):
- return K.mean(K.binary_crossentropy(y_true, y_pred), axis=-1)
(8)categorical_crossentropy
多分类的逻辑
- def categorical_crossentropy(y_true, y_pred):
- return K.categorical_crossentropy(y_true, y_pred)
评价函数用于评估当前训练模型的性能。当模型编译后(compile),评价函数应该作为 metrics
的参数来输入。
- model.compile(loss='mean_squared_error',
- optimizer='sgd',
- metrics=['mae', 'acc'])
- from keras import metrics
-
- model.compile(loss='mean_squared_error',
- optimizer='sgd',
- 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作用相同,但适用于稀疏情况
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。