python - 多类多标签分类的每类加权损失

标签 python tensorflow classification loss-function

我正在进行多类多标签分类。也就是说,每个示例都有 N_labels 完全独立的标签,而每个标签可能有 N_classes 不同的值(互斥)。更具体地说,每个示例都由 N_labels 维向量进行分类,而每个向量分量可以来自集合 {0, 1, ..., N_classes}

例如,如果N_labels = 5N_classes = 3,则每个示例可以通过以下标签进行分类:

[2, 1, 0, 0, 1], [0, 0, 2, 2, 1], [0, 0, 0, 0, 0]

此外,对于每个标签,我在不同类之间存在非常不平衡,即训练集中 90% 的示例属于集合 0。因此,我想执行加权 softmax 交叉熵来计算每个标签的损失(以及之后的平均值)。

尝试使用:

tf.losses.sparse_softmax_cross_entropy # but it seems that it performs weightening between different label and not between classes for each label.

tf.nn.softmax_cross_entropy_with_logits,  tf.nn.softmax_cross_entropy_with_logits_v2  # does not have weightening option ever

tf.nn.weighted_cross_entropy_with_logits  # good only for binary classification

我想找到compute_loss函数来通过以下方式计算损失:

loss = compute_loss(logits=my_logits, labels=my_labels, weights=my_weights)

哪里

my_logits is of shape [batch_size, N_labels, N_classes]
my_labels is of shape [batch_size, N_labels]
my_weight is of shape [N_labels, N_classes]

请注意,每个标签可能有不同的权重(针对类别)

最佳答案

我认为您需要tf.losses.sigmoid_cross_entropy它使用multi_class_labels正如您所描述的那样,并且具有应用权重的功能。 https://www.tensorflow.org/api_docs/python/tf/losses/sigmoid_cross_entropy

示例: 假设您有一个多类多标签分类问题,其中总共有 10 个类,单个示例的标签类似于 [1, 3, 6],这意味着示例包含类 1、3 和 6。< br/> 您需要使用k-hot编码

labels = tf.reduce_max(tf.one_hot([1, 3, 6], 10, dtype=tf.int32), axis=0)

在这种情况下,输出将为[0, 1, 0, 1, 0, 0, 1, 0, 0, 0]

关于python - 多类多标签分类的每类加权损失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55355059/

相关文章:

python - 修复 Pygame 玩家输入响应时间

python - 为什么 -10//3 给出 -4?

tensorflow - Anaconda 安装的 Tensorflow 缺少 contrib 框架中的 'audio_ops'

image - Scikit 学习。对无序 jpg 进行分类

machine-learning - 随机梯度下降是分类器还是优化器?

python - phantomjs 引发 OSError : [Errno 9] Bad file descriptor

python - 使用 Selenium + Python 获取 text() 节点值

python - 将TensorFlow Faster R-CNN卡住图转换为Intel OpenVINO框架时发生内部错误

python - Keras model.predict,InvalidArgumentError,ConcatOp : Dimensions of inputs should match

r - 运行 glinternet 时出错 : a statistical function for automatic model selection using interaction terms by Stanford's professor T. Hastie