简体   繁体   中英

RuntimeError: size mismatch, m1: [28 x 28], m2: [784 x 128]

After training my model, I tried to plot graph of the softmax output, but it resulted in the runtime error mentioned in the title.

Here is the following code snippet:

%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')

The problem is with this part (I guess).

img = images[1]

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

Problem : image you are loading is of dimension 28x28, however, the first index in input to the model is generally batch size. Since there is 1 image only, so you have to make the first dimension to be of size 1. To do that do img = img.view( (-1,) + img.shape) or img=img.unsqueeze(dim=0) . Also, it seems that the first layer weight is 784 x 128. ie the image should be converted to vector and fed to model. For that we do img=img.view(1, -1) .

So, in total, you need to do

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

or you can just use one command instead of two (unsqueeze is unnecessary)

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM