在pytorch中进行机器学习后,如何计算给定图像属于哪种类型的百分比?

How to calculate the percentage of which kind the given image is after machine learning in pytorch?

我用自定义 vgg 模型和 CIFAR10 数据集训练了我的机器,并用同一数据集中的一些图像进行了测试。

airplane :  -16.972412
automobile :  -18.719894
bird :  -6.989656
cat :  -3.8386667
deer :  -7.622768
dog :  0.37765026
frog :  -8.165334
horse :  -7.4519434
sheep :  -21.241518
truck :  -18.978928

这是我获得测试图像类型值的方法之一。以下是我在上面打印的内容:

kind = ["airplane", "automobile", "bird", "cat", "deer", "dog", "frog", "horse", "sheep", "truck"]
for k in kind:
      print(k,": ", output.cpu().detach().numpy()[0][kind.index(k)])

在这里,给定的测试图像是狗是正确的,这是最高值,但我想将每个值打印为百分比,所有值的总和为100。我该怎么做?我使用 pytorch 编写代码。

这些值为logits,您应该对它们应用softmax以获得0 - 1之间的概率值,然后将它们乘以100。

代码段:

pred = output.cpu().detach().numpy()

def softmax(x):
  "Function computes the softmax values for the each element in the given numpy array"
  return np.exp(x) / np.sum(np.exp(x), axis=0)

def probability(x):
  "Function applies softmax for the given logit and returns the classification probability"
  return softmax(x) * 100

output_probs = probability(preds)

或者您可以使用 scipy

中的 softmax 函数
from scipy.special import softmax

output_probs = softmax(preds)