Ответы:
Используйте разреженную категориальную кроссцентропию, когда ваши классы являются взаимоисключающими (например, когда каждая выборка принадлежит точно одному классу), и категориальную кроссцентропию, когда одна выборка может иметь несколько классов, или метки имеют мягкие вероятности (например, [0,5, 0,3, 0,2]).
Формула для категориальной кроссентропии (S - выборки, C - классификация, - выборка относится к классу c):
В случае, когда классы являются исключительными, вам не нужно суммировать их - для каждого образца только ненулевое значение просто для истинного класса c.
Это позволяет экономить время и память. Рассмотрим случай 10000 классов, когда они являются взаимоисключающими - только 1 log вместо суммирования 10000 для каждого образца, только одно целое число вместо 10000 float.
Формула одинакова в обоих случаях, поэтому никакого влияния на точность не должно быть.
o1,o2,o3
и у каждого есть 167,11,7
классы соответственно. Я прочитал ваш ответ, что это не будет иметь никакого значения, но есть ли разница, буду ли я использовать sparse__
или нет. Могу ли я перейти к categorical
последним 2 и sparse
к первому, поскольку в первом классе 167 классов?
Ответ, в двух словах
Если ваши цели имеют горячее кодирование, используйте categoryorical_crossentropy. Примеры однократного кодирования:
[1,0,0]
[0,1,0]
[0,0,1]
Но если ваши цели - целые числа, используйте sparse_categorical_crossentropy. Примеры целочисленных кодировок (для завершения):
1
2
3
sparse_categorical_crossentropy
? А что значит from_logits
аргумент?