kera中class_weight和sample_weight的影响

时间:2016-12-21 21:10:10

标签: keras

有人能否在数学上告诉我在计算损失函数和指标时,在Keras中如何使用sample_weight和class_weight?一个简单的数学表达将是伟大的。

1 个答案:

答案 0 :(得分:7)

这是一个简单的乘法。样品所造成的损失因其样品重量而放大。假设i = 1 to n个样本,长度为w的样本权重n的权重向量,以及样本i的损失表示为L_i

enter image description here

特别是在Keras中,每个样品的损失与其重量的乘积除以不为0的重量分数,使得每批的损失与重量的数量成比例> 1。 0个样本。设p为非零权重的比例。

enter image description here

这是来自Keras回购的相关代码片段:

score_array = loss_fn(y_true, y_pred)

if weights is not None:
    score_array *= weights
    score_array /= K.mean(K.cast(K.not_equal(weights, 0), K.floatx()))

return K.mean(score_array)

class_weight的使用方式与sample_weight相同;它只是为了方便在整个类中指定某些权重而提供。

样本权重目前不适用于指标,只有损失。