如何在Keras的自定义损失函数中使用样本权重?

时间:2019-04-05 09:59:14

标签: keras deep-learning

我在keras中使用自定义损失函数。现在,我想在Keras中使用样本权重。

我已经在Google中搜索过,有些文章建议model.fit(X,y,sample_weight= custom_weights)

但是我想直接在自定义损失函数中使用样本权重。我的自定义损失函数非常复杂,由于某种原因,我需要直接处理样品重量。

例如:

custom_weights = np.array([1,2,3,4,5,6,7,8,9,10])

#my failed attempt
def custom_loss_function(y_true, y_pred , custom_weights):
    return K.mean(K.abs(y_pred - y_true) * custom_weights), axis=-1)

注意:我真正的custom_loss_function非常复杂。在这个问题中,我以“ MAE”为例来简化问题,因此我们可以集中回答“如何在custom_loss_function中使用样本权重”

如何正确执行此任务?

1 个答案:

答案 0 :(得分:0)

您可以使用sklearn:

from sklearn.utils import compute_class_weight
import numpy as np

classWeight = compute_class_weight('balanced', np.unique(target) , target) 
classWeight = dict(enumerate(classWeight))

model.fit(,,,,,,,,,,, class_weight = classWeight )