![](/img/trans.png)
[英]RuntimeError: size mismatch, m1: [4 x 784], m2: [4 x 784] at /pytorch/aten/src/TH/generic/THTensorMath.cpp:136
[英]RuntimeError: size mismatch, m1: [28 x 28], m2: [784 x 128]
训练好模型后,我尝试绘制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')
问题出在这部分(我猜)。
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 x128。即,图像应转换为矢量并馈入模型。 为此,我们执行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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.