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,o3i każdy ma 167,11,7odpowiednio 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 categoricalostatnie 2 i sparsepierwsze, 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_logitsargument?