我想为n个类执行多标签图像分类任务.
我为每个图像都有稀疏的标签向量,每个标签向量的每个维度目前都以这种方式编码:
1.0 – >标签true / Image属于此类
-1.0 – >标签false / Image不包含在此类中.
0.0 – >缺少值/标签
例如:V = {1.0,-1.0,1.0,0.0}
对于该示例V,模型应该知道相应的图像应该被分类在第一和第三类中.
我的问题是目前如何处理缺失的值/标签.我搜索了这些问题,发现了这个问题:
tensorflow / skflow#113 found here
因此可以进行多重图像分类:
tf.nn.sigmoid_cross_entropy_with_logits(logits,targets,name = None)
但TensorFlow具有稀疏softmax的误差函数,用于独占分类:
tf.nn.sparse_softmax_cross_entropy_with_logits(logits,labels,name = None)
那么稀疏的S形交叉熵是否存在? (无法找到某些内容)或任何建议如何处理稀疏标签的多标签分类问题.
最佳答案 我使用weighted_cross_entropy_with_logits作为损失函数,正值权重为1s.
就我而言,所有标签都同样重要.但是0比任何标签的价值高出1倍的可能性要高出10倍.
所以我通过调用上述损失函数的pos_weight参数来权衡所有1.我使用了pos_weight(=正值的权重)10.顺便说一句,我不建议任何策略来计算pos_weight.我认为这将明确取决于手头的数据.
如果真实标签= 1,
weighted_cross_entropy = pos_weight * sigmoid_cross_entropy
具有对数的加权交叉熵与具有对数的Sigmoid交叉熵相同,除了额外权重值乘以具有正实数值的所有目标,即; 1.
理论上,它应该做的工作.我仍在调整其他参数以优化性能.稍后将更新性能统计信息.