@Rakt0R

Как преобразовать массив чисел который возвращается функцией model.predict в нормальный вид?

Есть обученная модель на рукописных буквах keras я закидываю картинку в model.predict и на выходе получаю массив
[[1.3135763e-05 1.8715122e-05 5.0942384e-04 3.1368667e-03 4.8224399e-07
  1.9225614e-09 8.8021789e-06 1.6401860e-07 2.6549672e-11 8.3116026e-07
  4.0256078e-09 1.6796425e-07 3.6518568e-06 4.8067295e-06 9.9334598e-01
  7.0137314e-05 2.8724906e-03 1.3247293e-06 4.6422329e-06 4.0724663e-07
  7.1994928e-06 7.2270223e-10 5.1488752e-07 8.8831303e-11 1.3050018e-07
  1.7309665e-07]]

Как понять какой результат выдает модель??
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
@AlexSku
не буду отвечать из-за модератора
В английском алфавите 26 букв. Обычно порядок от a до z. Выбери максимальное число, его положение будет соответствовать одной букве (если сумма =1, то это вероятности).
Скорее всего, на картинке английская буква.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
mayton2019
@mayton2019
Bigdata Engineer
Этого никто не знает. Нужно знать во первых фреймворк keras. Во вторых знать как проходило обучение.
Какая топология сети была выбрана. Без этой информации эти числа - просто остаются массивом чисел.

И ты должен еще нам всем рассказать как у тебя представлены рукописные буквы. Эту информацию
ты точно должен знать.
Ответ написан
Комментировать
Maksim_64
@Maksim_64
Data Analyst
Ну надо конечно догадываться что вы имеете ввиду под нормальным видом, данные в массиве представлены в научном виде. Например 1e-02 = 1*10^(-2) = 1/100. Соответственно, например 1.3135763e-05 = 1.3135763 * 10^(-5).

Можно принудить конечно numpy отображать маленькие числа в "обычном виде" например
np.set_printoptions(suppress=True)
особо маленькие числа он будет показывать, как ноль, что бы преодолеть и это у вас -10 самая большая степень, можно добавить форматтер.
np.set_printoptions(suppress=True, formatter={'float_kind':'{:0.10f}'.format})

в обоих случаях при печати numpy массива он будет в том что вы называете "нормальным видом".
Ответ написан
Комментировать
@rPman
дико интересно, что это за задача в которой размерность на выходе сети - 26 (когда как рукописные буквы это весь русский алфавит - 33 и цифры - 10, сверху еще знаки препинания неплохо бы докинуть)

В подавляющем большинстве случаев распознавание строится по принципу - каждый элемент выходного вектора = искомый объект (т.е. в данной задаче символ) а значение - вероятность (значение от 0 до 1, где 1 - это 100%, сумма всех вероятностей не 1) того что соответствующий объект был подан на вход.

В данном случае судя по всему это символ в позиции 14 с вероятностью 9.9334598e-01 (она тут максимальная)

Ответ на твой вопрос - смотри как формировалась обучающая выборка, как выходы определялись.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы