не в состоянии предсказать, используя pytorch [MNIST] - PullRequest
1 голос
/ 21 марта 2019

нюх туторч, пытаюсь учиться.

ссылка на мой блокнот: https://gist.github.com/jagadeesh-kotra/412f371632278a4d9f6cb31a33dfcfeb

Я получаю точность проверки 95%.

я использую следующее для прогнозирования:

m.eval()

testset_predictions = []
for batch_id,image in enumerate(test_dataloader):
    image = torch.autograd.Variable(image[0])
    output = m(image)
    _, predictated = torch.max(output.data,1)
    for prediction in predicted:
        testset_predictions.append(prediction.item())

len(testset_predictions)

Проблема в том, что я получаю только 10% точности, когда я передаю результат в соревнование по kaggle, что так же хорошо, как и случайный прогноз. Я не могу понять, что я делаю неправильно.

пожалуйста, помогите:)

1 Ответ

3 голосов
/ 21 марта 2019

Скорее всего, это связано с опечаткой; в то время как вы хотите использовать только что созданные predictated результаты, вы фактически используете predicted:

_, predictated = torch.max(output.data,1)
    for prediction in predicted:

что predicted происходит из ранее связанного кода и содержит прогнозы из набора проверки вместо набора теста :

#validation

# ...

for batch_idx, (data, target) in enumerate(val_dataloader):

    data, target = Variable(data), Variable(target)

    output = m.forward(data)

    _, predicted = torch.max(output.data,1)

Итак, вы даже не получаете сообщение об ошибке, потому что predicted действительно существует - это просто не то, что вы на самом деле хотите использовать ... В итоге вы отправляете результаты для набора проверки вместо тестового ( это определенно не помогает, поскольку оба состоят из 10 000 выборок), следовательно, вы ожидаете, что точность случайного угадывания составит ~ 10% ...

...