Bagaimana Keras menghitung akurasi?

26

Bagaimana Keras menghitung akurasi dari probabilitas classwise? Katakanlah, misalnya kita memiliki 100 sampel dalam set tes yang dapat dimiliki salah satu dari dua kelas. Kami juga memiliki daftar probabilites yang berkelas. Ambang apa yang digunakan Keras untuk menetapkan sampel ke salah satu dari dua kelas?

Raghuram
sumber
apakah Anda menggunakan model.evaluate dalam keras?
Hima Varsha
Ya, saya menggunakan model.evaluate. Lebih khusus lagi, model.evaluate_generator.
Raghuram
Kemungkinan @SO terkait: Bagaimana Keras mengevaluasi akurasi? )
desertnaut

Jawaban:

24

Untuk klasifikasi biner, kode untuk metrik akurasi adalah:

K.mean(K.equal(y_true, K.round(y_pred)))

yang menunjukkan bahwa 0,5 adalah ambang batas untuk membedakan antara kelas. y_true tentu saja harus 1-hot dalam kasus ini.

Ini sedikit berbeda untuk klasifikasi kategori:

K.mean(K.equal(K.argmax(y_true, axis=-1), K.argmax(y_pred, axis=-1)))

yang berarti "seberapa sering prediksi memiliki nilai maksimum di tempat yang sama dengan nilai sebenarnya"

Ada juga opsi untuk akurasi kategori top-k, yang mirip dengan yang di atas, tetapi menghitung seberapa sering kelas target dalam prediksi top-k.

Mikhail Yurasov
sumber
Terima kasih atas jawabannya. Apakah itu berarti bahkan untuk klasifikasi biner, label harus berupa kode yang panas?
Raghuram
@Raghuram Tidak, untuk klasifikasi biner Anda hanya perlu 0 atau 1 sebagai kelas, tidak perlu satu lagi menyandikannya. Karena K. berarti (K. sama (y_true, K.round (y_pred)))) akan cocok dengan 2 nilai float untuk setiap kasus, jadi harus 0 atau 1 dan bukan [0,1], [1,0].
Divyanshu Kalra
Untuk akurasi kategori, gunakan categorical_accuracy.
Shital Shah
1
untuk masalah multi-kelas (dengan lebih dari dua kelas), apakah ada perbedaan antara menggunakan "akurasi" vs "ategical_accuracy "
Quetzalcoatl