码迷,mamicode.com
首页 > 其他好文 > 详细

Multi label 多标签分类问题

时间:2018-09-19 14:43:29      阅读:1291      评论:0      收藏:0      [点我收藏+]

标签:bat   inf   variable   rop   nbsp   oat   bin   图片   batch   

调用函数

Pytorch使用torch.nn.BCEloss

Tensorflow使用tf.losses.sigmoid_cross_entropy

在output和target之间构建binary cross entropy,其中i为每一个类。

 技术分享图片

m = nn.Sigmoid()
loss = nn.BCELoss()
input = autograd.Variable(torch.randn(3), requires_grad=True)
target = autograd.Variable(torch.FloatTensor(3).random_(2))
output = loss(m(input), target)
output.backward()

注意target的形式,要写成01编码形式,eg:如果同时为第一类和第三类则,[1, 0, 1]

主要是结合sigmoid来使用,经过classifier分类过后的输出为(batch_size,num_class)为每个数据的标签, 标签不是one-hot的主要体现在sigmoid(output)之后进行bceloss计算时:sigmoid输出之后,仍然为(batch_size,num_class),但是是每个类别的分数,对于一个实例,它的各个label的分数加起来不一定要等于1,bceloss在每个类维度上求cross entropy loss然后加和求平均得到,这里就体现了多标签的思想。

[CVPR2015] Is object localization for free? – Weakly-supervised learning with convolutional neural networks这篇论文里设计了针对多标签问题的loss,传统的类别分类不适用,作者把这个任务视为多个二分类问题,loss function和分类的分数如下:

技术分享图片 

Multi label 多标签分类问题

标签:bat   inf   variable   rop   nbsp   oat   bin   图片   batch   

原文地址:https://www.cnblogs.com/demian/p/9674204.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!