我在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中使用样本权重”
如何正确执行此任务?
答案 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 )