我有2个类的数据集不平衡。我正在使用categorical_crossentropy
。我想知道我的代码。class_weight
与categorical_crossentropy
??一起使用是否正确?如果是,则class_weight
仅将其应用于训练集还是整个数据?
我已经搜索了很多次,但是没有找到任何有用的网站。任何帮助,将不胜感激。
我的代码:
model.compile(loss='categorical_crossentropy', optimizer=opt_adam, metrics=['accuracy'])
history=model.fit_generator(generate_arrays_for_training(indexPat, train_data, start=0,end=100)
validation_data=generate_arrays_for_training(indexPat, test_data, start=0,end=100)
steps_per_epoch=int((len(train_data)/2)),
validation_steps=int((len(test_data)/2)),
verbose=2,class_weight = {0:1, 1:1.181},
epochs=65, max_queue_size=2, shuffle=True)
是的,您可以将类别权重与分类交叉熵一起使用。计算损失函数时将应用权重。错误的分类将根据权重进行处罚。因此,权重既不应用于验证集也不应用于测试集。然后,想法是在训练时间模型中给予班级更多关注并相应地更新权重。
这就是为什么在测试或验证时间内,学习到的权重将相对于类权重隐式地存在偏差。
代码中唯一的问题可能是类权重。权重可能总计为1,但是您应该为此检查库详细信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句