我有一个数据集,其中包含带有关联的标签和边界框的图像和xml文件。其中一些图像包含多个标签。
我设计了一个数据加载器,以从xml文件中提取注释。基于数据加载器,对于1批注释,输出如下所示:
{'boxes': tensor([[[444., 220., 27., 65.],
[468., 220., 26., 66.],
[415., 224., 20., 33.]]]),
'id': tensor([[1., 1., 4.]])}
根据我的理解,我需要将BCEWithLogitsLoss用于多标签方法。
我遇到的问题是当有多个标签时如何计算损失。当是单个标签时,我将以下方法与CrossEntropy优化器结合使用:
for i, data in enumerate(trainloader, 0):
inputs, labels = data
optimizer.zero_grad()
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
这种方法是否适用于多标签?