Как рассчитать пиксельную точность в pytorch? - PullRequest
0 голосов
/ 09 июня 2018

Мой код выглядит следующим образом, и я получаю точность от 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 голосов
/ 10 июня 2018

Я предполагаю, что следующая строка накапливает точность по мини-пакетам.

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)
...