Keras sample_weights是内部归一化还是按原样使用?

wnavrhmk  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(159)

我知道sample_weights可以作为生成器的第三个返回值传递,但我不清楚这些权重在内部是如何使用的:更具体地说,是按原样应用于损失的权重,还是在内部进行任何类型的归一化(例如,使整个数据或每个小批次的权重加起来等于1)。
在我的用例中,我有整个数据集的权重,我希望在不进行任何后处理的情况下使用它们,以确保权重在全局保持一致。在这种情况下,一个不理想的行为是,例如,如果在内部对每个批次的权重进行规范化。
任何指针如何我可以得到这个底部将是高度赞赏。
我四处寻找,但找不到任何与这个特定问题有关的东西。

7rfyedvj

7rfyedvj1#

sample_weights按原样使用。在计算平均值(或其他缩减方法)之前,将每个样本的误差乘以相应的样本重量。
考虑BinaryCrossEntropysample_weights,其中reduction设置为none

bce = tf.keras.losses.BinaryCrossentropy(from_logits=True, reduction='none')

y_true = [[0, 1], [0, 0]]
y_pred = [[-20, 0.5], [3, -10.]]

# without sample_weights
bce(y_true, y_pred).numpy()
#[0.23703845 1.5243164 ]

#with sample weights
bce(y_true, y_pred, sample_weight=[100, 10]).numpy()
# [23.703844 15.243164]

相关问题