我想对 n 个类别执行多标签图像分类任务。
我为每个图像提供了稀疏标签向量,并且每个标签向量的每个维度当前都以这种方式编码:
1.0 ->Label true / Image属于这个类
-1.0 ->Label false / 图像不包含此类。
0.0 -> 缺失值/标签
例如:V={1.0,-1.0,1.0,0.0}
对于这个例子 V,模型应该学习相应的图像应该被分类为第一类和第三类。
我目前的问题是如何处理缺失的值/标签。我搜索了问题并发现了这个问题:
张量流/skflow#113在这里找到
因此可以使用以下方法进行多标签图像分类:
tf.nn.sigmoid_cross_entropy_with_logits(logits,目标,名称=无)
但是TensorFlow有这个稀疏softmax的误差函数,用于排他分类:
tf.nn.sparse_softmax_cross_entropy_with_logits(logits,标签,名称=无)
那么是否存在稀疏 sigmoid 交叉熵之类的东西呢? (找不到东西)或任何建议如何处理稀疏标签的多标签分类问题。
I used 带逻辑的加权交叉熵作为 1 秒具有正权重的损失函数。
就我而言,所有标签都同样重要。但 0 作为任何标签值出现的可能性是 1 的十倍。
所以我通过调用来权衡所有 1位置权重上述损失函数的参数。我使用的 pos_weight(= 正值的权重)为 10。顺便说一句,我不推荐任何计算 pos_weight 的策略。我认为这将明确取决于手头的数据。
如果真实标签= 1,
加权交叉熵 = 位置权重 * sigmoid_交叉熵
带 logits 的加权交叉熵与Sigmoid 交叉熵与 logits,除了额外的重量值乘以所有具有正实际价值的目标IE。; 1.
从理论上讲,它应该可以完成这项工作。我仍在调整其他参数以优化性能。稍后将更新性能统计数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)