Почему мы используем numpy.argmax () для возврата индекса из массива предсказаний? - PullRequest
0 голосов
/ 30 мая 2019

Позвольте мне предвосхитить это, сказав, что я очень плохо знаком с нейронными сетями, и я впервые использую numpy, tenorflow или keras.

Я написал нейронную сеть для распознавания рукописных цифр, используя набор данных MNIST. Я следовал этого урока от Sentdex и заметил, что он использовал print(np.argmax(predictions[0])) для печати первого индекса из массива предсказаний.

Я попытался запустить программу с заменой этой строки на print(predictions[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])

Я прочитал документацию для функции argmax (), и из того, что я понимаю, она берет массив x-измерения, преобразует его в одномерный массив, а затем возвращает индекс наибольшего значения. В документации Keras для model.predict () указано, что функция возвращает пустой массив предсказаний сетей. Так что я не понимаю, почему мы должны использовать argmax () , чтобы правильно распечатать прогноз, потому что, как я понимаю, он имеет совершенно не связанную цель.

Извините за плохое форматирование кода, я не мог понять, как правильно вставить многострочные куски кода в мой пост

Ответы [ 2 ]

1 голос
/ 30 мая 2019

Если я хорошо понимаю ваш вопрос, ответ довольно прост:

  • Вы хотите предсказать, какое число находится на изображении, для чего вы используете слой активации softmax, чтобы предсказатьвероятность для каждого класса
  • Итак, ваши прогнозы - это массив формы NUMBER_OF_CLASS, но нам нужна не вероятность класса, а только какая цифра на изображении
  • Итак, мы берем индексмаксимальная вероятность в этом массиве предсказаний
  • Этот индекс будет соответствовать цифре, предсказанной сетью

Надеюсь, у меня все ясно, ахах

0 голосов
/ 30 мая 2019

То, что выводит любая нейронная сеть классификации, является распределением вероятностей по индексам классов, что означает, что сеть назначает одну вероятность для каждого класса.Сумма этих вероятностей равна 1,0.Затем сеть обучается назначать наибольшую вероятность правильному классу, поэтому для восстановления индекса класса из вероятностей необходимо выбрать местоположение (индекс), которое имеет максимальную вероятность.Это делается с помощью операции argmax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...