Ошибка времени выполнения: несоответствие размера, м1: [28 х 28], м2: [784 х 128] - PullRequest
0 голосов
/ 13 февраля 2019

После обучения моей модели я попытался построить график вывода softmax, но это привело к ошибке времени выполнения, упомянутой в заголовке.

Вот следующий фрагмент кода:

%matplotlib inline
%config InlineBackend.figure_format = 'retina'

import helper

# Test out your network!

dataiter = iter(testloader)
images, labels = dataiter.next()
img = images[1]

# TODO: Calculate the class probabilities (softmax) for img
ps = torch.exp(model(img))

# Plot the image and probabilities
helper.view_classify(img, ps, version='Fashion')

1 Ответ

0 голосов
/ 13 февраля 2019

Проблема с этой частью (я думаю).

img = images[1]

# TODO: Calculate the class probabilities (softmax) for img
ps = torch.exp(model(img))

Проблема : изображение, которое вы загружаете, имеет размер 28x28, однако первый индекс при вводе в моделькак правило, размер партии.Поскольку имеется только 1 изображение, вам нужно сделать первое измерение размером 1. Для этого выполните img = img.view( (-1,) + img.shape) или img=img.unsqueeze(dim=0).Кроме того, кажется, что вес первого слоя составляет 784 x 128. Т.е. изображение должно быть преобразовано в вектор и передано в модель.Для этого мы делаем img=img.view(1, -1).

Итак, в общем, вам нужно сделать

img = images[1]
img = img.unsqueeze(dim=0)
img=img.view(1, -1)

# TODO: Calculate the class probabilities (softmax) for img
ps = torch.exp(model(img)) 

, или вы можете просто использовать одну команду вместо двух (отмена сжатия не требуется)

img = images[1]
img=img.view(1, -1)
...