model.fit结合dataset实现输入数据的正样本加权

在处理样本不平衡问题时,通过TensorFlow的model.fit结合dataset,可以实现正样本加权。文章介绍了如何使用class_weight参数自动调整loss的权重,同时讨论了class_weight与sample_weight的区别,并分享了解决因使用True/False作为标签而导致的错误的解决方案,强调了正确设置class_weight的重要性。
摘要由CSDN通过智能技术生成

最近写代码想实现给我的loss正样本加权,因为我的数据集中正样本占比只有15.79%,为了保证tensorflow的IO性能,我采取使用dataset构建高效的数据输入流水线。
正在我忧愁要不要自己写weight_loss函数的时候开心地发现model.fit提供了参数class_weight,只需要输入字典结构的class_weight就可自动实现对已有的loss进行分类别的加权。
(不要以为weight_loss普通的loss加个系数就够了,loss的定义是当前epoch到目前为止所有batch的loss,而不是当前这个batch的loss,详情见之前的一篇博客
注意区分与sample_weight的关系,sample_weight表示对不同的样本的权重,比如要对一个个的batch样本的loss分别加权。class_weight和sample_weight不仅是用在loss中,在metrics中也有这两个参数,不过一般不怎么对metrics使用。

由于我的label是用True和False标记的,所以我在实验过程中传入class_weight={True:4}结果发现遇到这个错误:
在这里插入图片描述
没看懂这是什么意思,于是google了不少答案,却发现没什么人遇到过我这个问题,只发现githu上的一个issue很相似,大概就是说tf.keras中model.fit的class_weight对dataset的支持似乎有问题,并且作者提交了PR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值