有人能否在数学上告诉我在计算损失函数和指标时,在Keras中如何使用sample_weight和class_weight?一个简单的数学表达将是伟大的。
答案 0 :(得分:7)
这是一个简单的乘法。样品所造成的损失因其样品重量而放大。假设i = 1 to n
个样本,长度为w
的样本权重n
的权重向量,以及样本i
的损失表示为L_i
:
p
为非零权重的比例。
这是来自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
相同;它只是为了方便在整个类中指定某些权重而提供。
样本权重目前不适用于指标,只有损失。