Skip to main content
 首页 » 编程设计

python之如何在 tensorflow 中为多标签分类实现不平衡数据的加权损失

2024年09月07日30sky-heaven

我有一个不平衡的数据集,我的任务是多标签分类

这是我最小化损失的代码:

logits = inference(input) 
xent = tf.nn.sigmoid_cross_entropy_with_logits( 
        logits=logits, labels=labels, name='xent') 
loss = tf.reduce_mean(xent, name='loss_op') 

现在。我想使用weighted-loss 进行分类,我该怎么做呢? 我可以使用 this link 吗? , 并将 softmax 替换为 sigmoid ?

点

我已阅读 this link ,但我的情况不是二元分类 在tensorflow_org我认为它也适用于二进制分类。

请您参考如下方法:

你可以使用 tf.losses.compute_weighted_loss .我建议阅读 the code看看这个函数是如何工作的,但你应该能够大致做到:

logits = inference(input) 
xent = tf.nn.sigmoid_cross_entropy_with_logits( 
    logits=logits, labels=labels, name='xent') 
weighted_loss = tf.losses.compute_weighted_loss(xent, YOUR_WEIGHTS, name='weighted_loss_op')