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

10-07 19:11
查看更多