为什么我们使用numpy.argmax()从预测的numpy数组中返回索引?

首先说明一下,我对神经网络非常新手,这是我第一次使用numpy、tensorflow或keras。

我编写了一个神经网络来识别手写数字,使用的是MNIST数据集。我按照Sentdex的这个教程进行操作,注意到他使用print(np.argmax(predictions[0]))来打印numpy预测数组中的第一个索引。

我尝试运行程序,将该行替换为print(predictions[i])(i被设置为0),但输出不是一个数字,而是:[2.1975785e-08 1.8658861e-08 2.8842608e-06 5.7113186e-05 1.2067199e-10 7.2511304e-09 1.6282028e-12 9.9993789e-01 1.3356166e-08 2.0409643e-06]

让我感到困惑的代码是:

predictions = model.predict(x_test)for i in range(10):   plt.imshow(x_test[i])   plt.show()   print("PREDICTION: ", predictions[i])

我阅读了numpy关于argmax()函数的文档,据我所知,它接受一个x维数组,将其转换为一维数组,然后返回最大值的索引。Keras关于model.predict()的文档表明,该函数返回网络预测的numpy数组。所以我不明白为什么我们必须使用argmax()来正确打印预测,因为据我所知,它的用途完全不相关。

抱歉代码格式不好,我没能弄清楚如何正确插入多行代码块到我的帖子中


回答:

如果我理解你的问题,那么答案非常简单:

  • 你想预测图像中的数字,为此你使用了softmax激活层来预测每个类别的概率
  • 所以你的预测是一个NUMBER_OF_CLASS形状的数组,但我们想要的不是类别概率,而是图像中哪个数字
  • 因此,我们取这个预测数组中最大概率的索引
  • 这个索引将对应网络预测的数字

希望我解释得清楚,哈哈

Related Posts

在使用k近邻算法时,有没有办法获取被使用的“邻居”?

我想找到一种方法来确定在我的knn算法中实际使用了哪些…

Theano在Google Colab上无法启用GPU支持

我在尝试使用Theano库训练一个模型。由于我的电脑内…

准确性评分似乎有误

这里是代码: from sklearn.metrics…

Keras Functional API: “错误检查输入时:期望input_1具有4个维度,但得到形状为(X, Y)的数组”

我在尝试使用Keras的fit_generator来训…

如何使用sklearn.datasets.make_classification在指定范围内生成合成数据?

我想为分类问题创建合成数据。我使用了sklearn.d…

如何处理预测时不在训练集中的标签

已关闭。 此问题与编程或软件开发无关。目前不接受回答。…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注