Sparse_categorical_crossentropy vs categorical_crossentropy (keras, doğruluk)


21

Hangisi doğruluk için daha iyidir veya aynı mıdır? Elbette, categorical_crossentropy kullanıyorsanız, bir hot encoding kullanırsınız ve sparse_categorical_crossentropy kullanıyorsanız normal tamsayı olarak kodlarsınız. Ayrıca, biri ne zaman diğerinden daha iyi?

Yanıtlar:


27

Sınıflarınız birbirini dışlayan (örneğin her bir örnek tam olarak bir sınıfa ait olduğunda) seyrek kategorik çapraz-çarpma yöntemini ve bir numunenin birden fazla sınıfa veya etikete sahip olabileceği kategorik çapraz-çarpma yöntemini kullanın (örneğin [0,5, 0,3, 0,2]).

Kategorik crossentropi için formül (S - örnekler, C - sınıf, sc - örnek c sınıfına aittir):

1NsScC1sclogp(sc)

logp(sc)

Bu zamandan ve hafızadan tasarruf etmenizi sağlar. Karşılıklı özel olduklarında 10000 sınıfı düşünün - her örnek için 10000 toplamak yerine sadece 1 günlük, 10000 float yerine sadece bir tamsayı.

Formül her iki durumda da aynıdır, bu nedenle doğruluk üzerinde hiçbir etki olmamalıdır.


1
Doğruluğu farklı bir şekilde mi etkiliyorlar, örneğin mnist basamaklı veri kümesinde?
Master M

1
Matematiksel olarak hiçbir fark yoktur. Uygulamalar (tensorflow veya pytorch diyelim) tarafından hesaplanan değerlerde önemli bir fark varsa, bu bir hata gibi görünür. Rasgele verilerle (1000 sınıf, 10.000 örnek) basit karşılaştırma fark göstermez.
frenzykryger


Haklısın. Teşekkürler!
frenzykryger

@frenzykryger Çoklu çıktı sorunu üzerinde çalışıyorum. 3 ayrı çıktı var o1,o2,o3ve her biri 167,11,7sırasıyla sınıf var . Hiçbir fark yaratmayacağına dair cevabınızı okudum ama kullansam sparse__da kullanmamamda fark var . Birinci sınıfta 167 ders olduğu için categoricalson 2 ve sparsebirincisi için gidebilir miyim ?
Deshwal

6

Kısaca Cevabı

Hedefleriniz tek etkin kodlanmışsa, categorical_crossentropy kullanın. Bir sıcak kodlama örnekleri:

[1,0,0]
[0,1,0] 
[0,0,1]

Ancak hedefleriniz tamsayı ise, sparse_categorical_crossentropy kullanın. Tamsayı kodlama örnekleri (tamamlama uğruna):

1
2
3

1
İçin tek bir çıkış düğümüne ihtiyacım var sparse_categorical_crossentropymı? Ve bu from_logitsargüman ne anlama geliyor?
Leevo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.