如何计算pytorch中的像素精度?

时间:2018-06-09 11:33:58

标签: image-processing image-segmentation floating-accuracy pytorch

我的代码如下所示,我从0到9000的准确度,这意味着它显然无法正常工作。

optimizer.zero_grad()
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
running_loss += loss.item()


predicted = outputs.data
predicted = predicted.to('cpu')
predicted_img = predicted.numpy()

labels_data = labels.data
labels_data = labels_data.to('cpu')
labels_data = labels_data.numpy()
labels = labels.to(device)

_, predicted = torch.max(outputs.data, 1)
total = labels.size(0) * labels.size(1) * labels.size(2)
correct = (predicted_img == labels_data).sum().item()
accuracy += ( correct / total)
avg_accuracy = accuracy/(batch)

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我假设以下行累积精确度超过小批量。

accuracy += (correct/total)

并且avg_accuracy = accuracy/batch给出了整个数据集的平均准确度,其中batch表示代表整个数据集的小批量总数。

如果您的准确度大于100,那么您应该检查是否在任何小批量中,correct > total?同时检查total = labels_data.size是否为您提供与以下行相同的值。

total = labels.size(0) * labels.size(1) * labels.size(2)