интерпретация странного вывода keras.predict - PullRequest
0 голосов
/ 25 мая 2020

я использую keras для мультиклассовой классификации проблемы текстовых комментариев, а если быть точным, вот эта: https://www.kaggle.com/c/jigsaw-toxic-comment-classification-challenge

Есть шесть классов, и наблюдения могут упасть во всех из них. Я обучил свою модель (LSTM), используя двоичную кросс-энтропию в качестве функции потерь

model.compile(loss = 'binary_crossentropy', 
          optimizer = 'adam', 
          metrics = ['accuracy'])

Теперь, для отчета, который я пишу, я хотел бы иметь возможность указать сом c предсказания. Поэтому я использую pred (), чтобы попытаться заставить его выполнить некоторые классификации.

 y_pred = model.predict(padded_test,verbose=1)

«padded_test» - это предварительно обработанный тестовый набор данных. Проблема в том, что когда я вызываю этот метод, то для этого комментария:

Why the edits made under my username Hardcore Metallica Fan were reverted? They weren't vandalisms,        just closure on some GAs after I voted at New York Dolls FAC. And please don't remove the template from the talk page since I'm retired now.89.205.38.27

я получаю очень странные значения предсказания:

array([7.9924166e-03, 2.0393365e-05, 1.5081263e-03, 2.9950817e-05,

Здесь я вижу, что многие из них вне класса значения предсказания имеют экспоненты и смехотворно высоки. Почему это? и как мне интерпретировать эти числа?

Раньше я пробовал использовать «категориальную перекрестную энтропию», которая давала мне только значения между 0-1, что я и ищу, однако это полностью испортило прогнозы 1.9759631e- 03, 2.7330496e-04], dtype = float32)

1 Ответ

0 голосов
/ 25 мая 2020

Значения прогнозов, которые вы видите, не являются большими числами. Напротив, это отрицательные экспоненты, например первая равна 0,0079924166.

Чтобы правильно объяснить это значение, необходимо знать функцию активации, которая используется моделью в выходном слое. Например:

  • , если вы использовали функцию активации softmax, выходные значения будут представлять вероятность того, что входная выборка принадлежит каждому из классов, и их сумма будет равна 1.
  • , если бы вы использовали функцию активации sigmoid (как это выглядит в данном случае), на выходе будут значения от 0 до 1, которые будут независимы друг от друга.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...