如何计算pytorch中的像素级精度?
How to calculate Pixel wise accuracy in 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)
我做错了什么?
我假设以下行累积了小批量的准确性。
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)
我的代码如下所示,我得到的精度是 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)
我做错了什么?
我假设以下行累积了小批量的准确性。
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)