我有一个高度不平衡的数据集,我想在model.fit_generator
中使用class_weight = 'auto'
。然而,当我这样做时,我发现我的模型没有学习:从第1个epoch到第50个epoch,training_acc = 0.65
和val_acc = 0.64
。如果我将class_weight
设置为'None'
,那么模型开始学习:在第50个epoch时,training_acc = 0.92
和val_acc = 0.88
。
其他人是否也遇到过这个问题?我是否需要手动定义一个类权重的字典?
回答:
对于keras中的model.fit_generator
,你可以使用train_generator.classes
来获取正确的类名以进行加权
然后你只需创建一个映射你类别的字典,例如:
class_weights = {'wolf':30 , 'fox':18}
这将给类’wolf’赋予30的权重,给类’fox’赋予18的权重
“`