Вычисление энтропии для классификации mnist с использованием Tensorflow и Python

#python #tensorflow #classification #mnist #entropy

#python #tensorflow #классификация #mnist #энтропия

Вопрос:

То, что я пытаюсь сделать, — это вычислить энтропию точности моей классификации. Я обучил модель и позволил ей делать прогнозы для тестовых данных 10 раз (они меняются, поскольку я каждый раз немного меняю модель). Тестовые данные представляют собой 1000 изображений из mnist, и поскольку mnist имеет 10 классов, я получаю массив со следующими размерами: (10, 1000, 10)

Далее я вычислил среднее значение для первого измерения, чтобы получить среднее значение всех моих прогнозов: (1000, 10)

Сейчас меня интересует энтропия каждого класса, поэтому я вычислил :

 np.sum((-1) * data * log(data), 0) 
  

Я получил источник здесь: https://arxiv.org/pdf/1703.02910.pdf

Проблема в том, что мое значение энтропии не находится между 0 и 1, и в итоге я получаю значения около 50 или более. Я видел, что многие люди раньше подсчитывали свои данные и делили их на результат, чтобы получить вхождения каждого значения. Это меня смущает, поскольку у меня есть значения типа 0,01445, которые, как правило, не повторяются. У меня уже есть десять классов, заданных положением значения внутри массива (последнее измерение 10 классов mnist).

Я просто хочу увидеть энтропию для каждого класса.

Я надеюсь, что вы сможете помочь

Комментарии:

1. Вы можете вычислить категориальную кроссэнтропию, используя tf.keras.losses.CategoricalCrossentropy , когда существует более двух классов меток. Более подробную информацию о библиотеке можно найти здесь . Спасибо!