Разница между категориальной и двоичной кросс-энтропией - PullRequest
0 голосов
/ 24 октября 2018

Используя керасы, я должен обучить модель, чтобы предсказать, принадлежит ли изображение к классу 0 или к классу 1. Я запутался в двоичном и categoryor_cross_entropy.Я искал это, но я все еще в замешательстве.Некоторые упоминали, что мы используем категориальную кросс-энтропию только тогда, когда мы пытаемся предсказать мультиклассы, и мы должны использовать для этого вектор с одним горячим кодировщиком.Таким образом, это означает, что нам не нужны какие-либо метки с одним горячим кодированием, когда мы собираемся тренироваться с использованием binary_cross_entrpoy.Некоторые предложили представлять векторы one_hot как [0.1.] (если класс равен 1) или [1.0.] (если класс равен 0) для binary_cross_entropy.Я использую один горячий кодировщик [0 1] или [1 0] с категориальной кросс-энтропией.Мой последний слой

model.add(Dense(num_classes, activation='softmax'))

    # Compile model
  model.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy'])

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Они математически идентичны для 2 классов , следовательно, двоичные.Другими словами, категориальная кросс-энтропия 2-го класса такая же, как двоичная кросс-энтропия с одним выходом.Чтобы дать более реальный пример, они идентичны:

model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', ...)
# is the same as
model.add(Dense(2, activation='softmax'))
model.compile(loss='categorical_crossentropy', ...)

Какой использовать? Чтобы избежать однозначного кодирования категориальных выходных данных, если у вас есть только 2 класса, это проще - изперспектива кодирования - использовать двоичную кросс-энтропию.Двоичный регистр может быть вычислительно более эффективным в зависимости от реализации.

0 голосов
/ 24 октября 2018

Кажется, двоичная кросс-энтропия это просто особый случай категориальной кросс-энтропии .Таким образом, когда у вас есть только два класса, вы можете использовать двоичную кросс-энтропию , вам не нужно делать одно горячее кодирование - ваш код будет на пару строк меньше.

...