我有1000张XRay图像,我正在尝试进行一些二进制预测(死亡/活着(。我有900张"活着"的照片和100张"死去"的照片,经过一番阅读(主要是在这里(,我想我可能不得不对样本的这种不平衡做出一些改变。
我试过
model.compile(...,loss=mycustom_loss,...)
方法,但我认为我无法理解自定义函数的语法。阅读了其他一些文件,我尝试了一种方法:
my_custom_loss_weights = [ 100/1000, 900/1000 ] # index 0 is 'died', index 1 is 'lived'
model.compile = (...,loss='binary_crossentropy',loss_weights=my_custom_loss_weights,...)
这给出了一些非常好的结果(loss和val_loss非常接近,acc和val_acc非常接近并且足够高(。
因此,问题是如何制作一个自定义的损失函数,返回二进制交叉熵,但基于我的权重(100/1000和900/1000(进行加权,其次,如果loss_weights参数是我想要的解决方案,我真的很幸运!
我尝试了我提到的链接的过采样方法,但结果很糟糕。
提前谢谢!
这是完全正确的做法,loss_weights
参数是正确的方法,也是正确实现的。您在Weighted loss
段下发布的链接中也对其进行了描述。