训练好模型后,我尝试绘制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)