Risposte:
Usa la crossentropia categorica sparsa quando le tue classi si escludono a vicenda (ad esempio quando ogni campione appartiene esattamente a una classe) e la crossentropia categorica quando un campione può avere più classi o le etichette sono probabilità morbide (come [0,5, 0,3, 0,2]).
La formula per la crossentropia categorica (S - campioni, C - classe, - campione appartiene alla classe c) è:
Nel caso in cui le classi siano esclusive, non è necessario sommarle - per ogni campione solo un valore diverso da zero è solo per la vera classe c.
Ciò consente di risparmiare tempo e memoria. Prendi in considerazione il caso di 10000 classi quando si escludono a vicenda - solo 1 log invece di sommare 10000 per ogni campione, solo un numero intero anziché 10000 float.
La formula è la stessa in entrambi i casi, quindi non dovrebbe esserci alcun impatto sull'accuratezza.
o1,o2,o3
e ognuno ha le 167,11,7
classi rispettivamente. Ho letto la tua risposta che non farà alcuna differenza, ma c'è qualche differenza se uso sparse__
o meno. Posso andare per categorical
gli ultimi 2 e sparse
per il primo in quanto ci sono 167 classi nella prima classe?
La risposta, in breve
Se i tuoi target hanno una codifica a caldo, usa categorical_crossentropy. Esempi di codifiche one-hot:
[1,0,0]
[0,1,0]
[0,0,1]
Ma se i tuoi target sono numeri interi, usa sparse_categorical_crossentropy. Esempi di codifiche di numeri interi (per motivi di completamento):
1
2
3
sparse_categorical_crossentropy
? E cosa significa l' from_logits
argomento?