deep-learning - Pytorch:如何找到多标签分类的准确性?
问题描述
我正在使用 vgg16,其中类数为 3,并且我可以为一个数据点预测多个标签。
vgg16 = models.vgg16(pretrained=True)
vgg16.classifier[6]= nn.Linear(4096, 3)
使用损失函数:nn.BCEWithLogitsLoss()
在单个标签问题的情况下,我能够找到准确性,因为
`images, labels = data
images, labels = images.to(device), labels.to(device)
labels = Encode(labels)
outputs = vgg16(images)
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()
acc = (100 * correct / total)`
如何找到多标签分类的准确性?
解决方案
从您的问题来看,vgg16
是返回原始 logits。因此,您可以执行以下操作:
labels = Encode(labels) # torch.Size([N, C]) e.g. tensor([[1., 1., 1.]])
outputs = vgg16(images) # torch.Size([N, C])
outputs = torch.sigmoid(outputs) # torch.Size([N, C]) e.g. tensor([[0., 0.5, 0.]])
outputs[outputs >= 0.5] = 1
accuracy = (outputs == labels).sum()/(N*C)*100
推荐阅读
- c# - 单词开头的子字符串
- html - 样式 div 为斑马
- machine-learning - 预测连续变量时神经网络的准确性
- android - × 组件 tns-core-modules 未安装。× 组件 tns-android 未安装。× 组件 tns-ios 未安装
- javascript - 如何在不重绘图表的情况下更新 highchart 中的向下钻取数据?
- python - 如何在 Python 中为 a 替换(环)?
- angular - 角度错误 TS2339:“订阅”类型上不存在属性“查找”
- android - Android 拆分 ABI armeabi-v8a 不工作。我不使用 ndk,但 arm 二进制文件仅适用于 armeabi-v8a
- regex - 仅从文本文件中提取日期并忽略大量数字
- java - Hibernate5 没有与 Spring5 进行交易?