Odpowiedzi:
Użyj rzadkiej kategorycznej crossentropy, gdy twoje klasy wzajemnie się wykluczają (np. Gdy każda próbka należy dokładnie do jednej klasy), a kategorycznej crosssentropii, gdy jedna próbka może mieć wiele klas lub etykiet, istnieje małe prawdopodobieństwo (np. [0,5, 0,3, 0,2]).
Wzór na kategoryczną crossentropy (S - próbki, C - klasy, - próbka należy do klasy c) to:
W przypadku, gdy klasy są wyłączne, nie trzeba ich sumować - dla każdej próbki jest tylko niezerowa wartość dla prawdziwej klasy c.
Pozwala to zaoszczędzić czas i pamięć. Rozważ przypadek 10000 klas, które wzajemnie się wykluczają - tylko 1 log zamiast sumowania 10000 dla każdej próbki, tylko jedna liczba całkowita zamiast 10000 liczb zmiennoprzecinkowych.
Formuła jest taka sama w obu przypadkach, więc nie powinno to mieć wpływu na dokładność.
o1,o2,o3
i każdy ma 167,11,7
odpowiednio klasy. Przeczytałem twoją odpowiedź, że nie będzie to miało znaczenia, ale czy jest jakakolwiek różnica, jeśli jej użyję, sparse__
czy nie. Czy mogę przejść na categorical
ostatnie 2 i sparse
pierwsze, ponieważ w pierwszej klasie jest 167 klas?
Odpowiedź w pigułce
Jeśli twoje cele są zakodowane na gorąco, użyj categorical_crossentropy. Przykłady kodowania jednorazowego:
[1,0,0]
[0,1,0]
[0,0,1]
Ale jeśli twoim celem są liczby całkowite, użyj sparse_categorical_crossentropy. Przykłady kodowania liczb całkowitych (dla uzupełnienia):
1
2
3
sparse_categorical_crossentropy
? A co oznacza ten from_logits
argument?