¿Cuál es mejor para la precisión o son iguales? Por supuesto, si usa categorical_crossentropy, usa una codificación activa, y si usa sparse_categorical_crossentropy, codifica como enteros normales. Además, ¿cuándo es uno mejor que el otro?
fuente
¿Cuál es mejor para la precisión o son iguales? Por supuesto, si usa categorical_crossentropy, usa una codificación activa, y si usa sparse_categorical_crossentropy, codifica como enteros normales. Además, ¿cuándo es uno mejor que el otro?
Use la entropía categórica escasa cuando sus clases son mutuamente excluyentes (por ejemplo, cuando cada muestra pertenece exactamente a una clase) y la entropía categórica cuando una muestra puede tener múltiples clases o etiquetas son probabilidades blandas (como [0.5, 0.3, 0.2]).
La fórmula para la crossentropía categórica (S - muestras, C - clases, - la muestra pertenece a la clase c) es:
Para el caso en que las clases son exclusivas, no es necesario sumarlas: para cada muestra solo el valor distinto de cero es justo para la verdadera clase c.
Esto permite ahorrar tiempo y memoria. Considere el caso de 10000 clases cuando son mutuamente excluyentes: solo 1 registro en lugar de sumar 10000 para cada muestra, solo un número entero en lugar de 10000 flotantes.
La fórmula es la misma en ambos casos, por lo que no debe haber impacto en la precisión.
o1,o2,o3
y cada una tiene167,11,7
clases respectivamente. He leído su respuesta de que no habrá diferencia, pero ¿hay alguna diferencia si la usosparse__
o no? ¿Puedo ir paracategorical
los últimos 2 ysparse
para el primero ya que hay 167 clases en la primera clase?La respuesta, en pocas palabras
Si sus objetivos están codificados en caliente, use categorical_crossentropy. Ejemplos de codificaciones one-hot:
Pero si sus objetivos son enteros, use sparse_categorical_crossentropy. Ejemplos de codificaciones de enteros (en aras de la finalización):
fuente
sparse_categorical_crossentropy
? ¿Y qué significa elfrom_logits
argumento?