Usage of loss functions

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

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 :预测. 具有与y_true相同形状的TensorFlow / Theano张量.

实际的优化目标是所有数据点上输出数组的平均值.

有关此类功能的一些示例,请查看损失来源 .

Available loss functions

mean_squared_error

keras.losses.mean_squared_error(y_true, y_pred)

mean_absolute_error

keras.losses.mean_absolute_error(y_true, y_pred)

mean_absolute_percentage_error

keras.losses.mean_absolute_percentage_error(y_true, y_pred)

mean_squared_logarithmic_error

keras.losses.mean_squared_logarithmic_error(y_true, y_pred)

squared_hinge

keras.losses.squared_hinge(y_true, y_pred)

hinge

keras.losses.hinge(y_true, y_pred)

categorical_hinge

keras.losses.categorical_hinge(y_true, y_pred)

logcosh

keras.losses.logcosh(y_true, y_pred)

预测误差的双曲余弦的对数.

log(cosh(x))近似等于(x ** 2) / 2为小型xabs(x) - log(2)对大x . 这意味着" logcosh"的工作原理与均方误差类似,但不受偶然的严重错误预测的强烈影响.

Arguments

  • y_true :真实目标的张量.
  • y_pred :预测目标的张量.

Returns

每个样本有一个标量损失项的张量.


huber_loss

keras.losses.huber_loss(y_true, y_pred, delta=1.0)

categorical_crossentropy

keras.losses.categorical_crossentropy(y_true, y_pred, from_logits=False, label_smoothing=0)

sparse_categorical_crossentropy

keras.losses.sparse_categorical_crossentropy(y_true, y_pred, from_logits=False, axis=-1)

binary_crossentropy

keras.losses.binary_crossentropy(y_true, y_pred, from_logits=False, label_smoothing=0)

kullback_leibler_divergence

keras.losses.kullback_leibler_divergence(y_true, y_pred)

poisson

keras.losses.poisson(y_true, y_pred)

cosine_proximity

keras.losses.cosine_proximity(y_true, y_pred, axis=-1)

is_categorical_crossentropy

keras.losses.is_categorical_crossentropy(loss)

注意 :使用categorical_crossentropy损失时,目标应采用分类格式(例如,如果您有10个类别,则每个样本的目标应是全零的10维向量,但对应于索引的1处的索引应为1.样本类别). 为了将整数目标转换为分类目标 ,可以使用to_categorical实用程序to_categorical

from keras.utils import to_categorical

categorical_labels = to_categorical(int_labels, num_classes=None)

使用sparse_categorical_crossentropy损失时,您的目标应为整数target . 如果您有分类目标,则应使用categorical_crossentropy .

categorical_crossentropy多类对数丢失的另一个术语.