Apa itu 'from_logits=True' di Keras/TensorFlow Loss Functions? Kecerdasan Data PlatoBlockchain. Pencarian Vertikal. Ai.

Apa itu 'from_logits=True' di Keras/TensorFlow Loss Functions?

Kerangka kerja Deep Learning seperti Keras menurunkan hambatan masuk untuk massa dan mendemokratisasi pengembangan model DL untuk orang yang tidak berpengalaman, yang dapat mengandalkan default yang wajar dan API yang disederhanakan untuk menanggung beban pekerjaan berat, dan menghasilkan hasil yang layak.

Kebingungan umum muncul di antara praktisi pembelajaran mendalam yang lebih baru saat menggunakan fungsi kehilangan Keras untuk klasifikasi, seperti: CategoricalCrossentropy dan SparseCategoricalCrossentropy:

loss = keras.losses.SparseCategoricalCrossentropy(from_logits=True)

loss = keras.losses.SparseCategoricalCrossentropy(from_logits=False)

Apa yang dilakukan from_logits bendera mengacu?

Jawabannya cukup sederhana, tetapi perlu melihat output dari jaringan yang kami coba nilai menggunakan fungsi loss.

Logit dan Probabilitas SoftMax

Singkat cerita:

Probabilitas dinormalisasi โ€“ yaitu memiliki rentang antara [0..1]. Logit tidak dinormalisasi, dan dapat memiliki kisaran antara [-inf...+inf].

Bergantung pada lapisan keluaran jaringan Anda:

output = keras.layers.Dense(n, activation='softmax')(x)

output = keras.layers.Dense(n)(x)

Output dari Dense lapisan akan antara kembali:

  • probabilitas: Output dilewatkan melalui fungsi SoftMax yang menormalkan output menjadi serangkaian probabilitas lebih n, itu semua ditambahkan ke 1.
  • logit: n aktivasi.

Kesalahpahaman ini mungkin muncul dari sintaks singkat yang memungkinkan Anda menambahkan aktivasi ke lapisan, tampaknya sebagai satu lapisan, meskipun itu hanya singkatan untuk:

output = keras.layers.Dense(n, activation='softmax')(x)

dense = keras.layers.Dense(n)(x)
output = keras.layers.Activation('softmax')(dense)

Fungsi kerugian Anda harus diinformasikan apakah itu harus mengharapkan distribusi normal (keluaran melewati fungsi SoftMax) atau log. Oleh karena itu, from_logits bendera!

Kapan Harus from_logits=Benar?

Jika jaringan Anda menormalkan probabilitas keluaran, fungsi kerugian Anda harus disetel from_logits untuk False, karena tidak menerima log. Ini juga merupakan nilai default dari semua kelas kerugian yang menerima bendera, karena kebanyakan orang menambahkan activation='softmax' ke lapisan output mereka:

model = keras.Sequential([
    keras.layers.Input(shape=(10, 1)),
    
    keras.layers.Dense(10, activation='softmax') 
])

input_data = tf.random.uniform(shape=[1, 1])
output = model(input_data)
print(output)

Ini menghasilkan:

tf.Tensor(
[[[0.12467965 0.10423233 0.10054766 0.09162105 0.09144577 0.07093797
   0.12523937 0.11292477 0.06583504 0.11253635]]], shape=(1, 1, 10), dtype=float32)

Karena jaringan ini menghasilkan distribusi yang dinormalisasi โ€“ ketika membandingkan output dengan output target, dan menilainya melalui fungsi kehilangan klasifikasi (untuk tugas yang sesuai) โ€“ Anda harus mengatur from_logits untuk False, atau biarkan nilai default tetap.

Di sisi lain, jika jaringan Anda tidak menerapkan SoftMax pada output:

model = keras.Sequential([
    keras.layers.Input(shape=(10, 1)),
    
    keras.layers.Dense(10)
])

input_data = tf.random.uniform(shape=[1, 1])
output = model(input_data)
print(output)

Ini menghasilkan:

tf.Tensor(
[[[-0.06081138  0.04154852  0.00153442  0.0705068  -0.01139916
    0.08506121  0.1211026  -0.10112958 -0.03410497  0.08653068]]], shape=(1, 1, 10), dtype=float32)

Anda harus mengatur from_logits untuk True untuk fungsi kerugian untuk memperlakukan output dengan benar.

Kapan Menggunakan SoftMax pada Output?

Sebagian besar praktisi menerapkan SoftMax pada output untuk memberikan distribusi probabilitas yang dinormalisasi, karena dalam banyak kasus inilah jaringan yang akan Anda gunakan โ€“ terutama dalam materi pendidikan yang disederhanakan. Namun, dalam beberapa kasus, Anda tidak ingin menerapkan fungsi ke output, untuk memprosesnya dengan cara yang berbeda sebelum menerapkan SoftMax atau fungsi lainnya.

Sebuah contoh penting datang dari model NLP, di mana benar-benar probabilitas atas kosakata yang besar dapat hadir dalam tensor keluaran. Menerapkan SoftMax lebih mereka semua dan dengan rakus mendapatkan argmax biasanya tidak memberikan hasil yang sangat baik.

Namun, jika Anda mengamati logit, ekstrak Top-K (di mana K dapat berupa angka apa pun tetapi biasanya berada di antara [0...10]), dan baru kemudian menerapkan SoftMax ke atas-k kemungkinan token dalam kosakata menggeser distribusi secara signifikan, dan biasanya menghasilkan hasil yang lebih realistis.

Lihat panduan praktis dan praktis kami untuk mempelajari Git, dengan praktik terbaik, standar yang diterima industri, dan termasuk lembar contekan. Hentikan perintah Googling Git dan sebenarnya belajar itu!

Ini dikenal sebagai pengambilan sampel Top-K, dan meskipun ini bukan strategi yang ideal, biasanya secara signifikan mengungguli pengambilan sampel serakah.

Melangkah Lebih Jauh โ€“ Pembelajaran Mendalam Praktis untuk Visi Komputer

Sifat ingin tahu Anda membuat Anda ingin melangkah lebih jauh? Kami merekomendasikan untuk memeriksa kami Kelas: โ€œPembelajaran Mendalam Praktis untuk Visi Komputer dengan Pythonโ€.

Kursus Computer Vision lainnya?

Kami tidak akan melakukan klasifikasi digit MNIST atau mode MNIST. Mereka melayani bagian mereka sejak lama. Terlalu banyak sumber belajar yang berfokus pada kumpulan data dasar dan arsitektur dasar sebelum membiarkan arsitektur kotak hitam tingkat lanjut memikul beban kinerja.

Kami ingin fokus pada demistifikasi, kepraktisan, pemahaman, intuisi dan proyek nyata. Mau belajar bagaimana Anda dapat membuat perbedaan? Kami akan membawa Anda dalam perjalanan dari cara otak kami memproses gambar hingga menulis pengklasifikasi pembelajaran mendalam tingkat penelitian untuk kanker payudara hingga jaringan pembelajaran mendalam yang "berhalusinasi", mengajari Anda prinsip dan teori melalui kerja praktik, membekali Anda dengan pengetahuan dan alat untuk menjadi ahli dalam menerapkan pembelajaran mendalam untuk memecahkan visi komputer.

Apa yang ada di dalam?

  • Prinsip pertama visi dan bagaimana komputer dapat diajarkan untuk "melihat"
  • Berbagai tugas dan aplikasi visi komputer
  • Alat perdagangan yang akan membuat pekerjaan Anda lebih mudah
  • Menemukan, membuat, dan memanfaatkan kumpulan data untuk visi komputer
  • Teori dan penerapan Jaringan Saraf Konvolusi
  • Menangani pergeseran domain, kejadian bersama, dan bias lainnya dalam kumpulan data
  • Transfer Belajar dan memanfaatkan waktu pelatihan dan sumber daya komputasi orang lain untuk keuntungan Anda
  • Membangun dan melatih pengklasifikasi kanker payudara yang canggih
  • Bagaimana menerapkan dosis skeptisisme yang sehat untuk mengarusutamakan gagasan dan memahami implikasi dari teknik yang diadopsi secara luas
  • Memvisualisasikan "ruang konsep" ConvNet menggunakan t-SNE dan PCA
  • Studi kasus tentang bagaimana perusahaan menggunakan teknik visi komputer untuk mencapai hasil yang lebih baik
  • Evaluasi model yang tepat, visualisasi ruang laten dan mengidentifikasi perhatian model
  • Melakukan penelitian domain, memproses kumpulan data Anda sendiri, dan membuat pengujian model
  • Arsitektur mutakhir, perkembangan ide, apa yang membuatnya unik dan bagaimana menerapkannya
  • KerasCV โ€“ perpustakaan WIP untuk menciptakan saluran pipa dan model yang canggih
  • Cara mengurai dan membaca makalah dan menerapkannya sendiri
  • Memilih model tergantung pada aplikasi Anda
  • Membuat pipeline machine learning ujung ke ujung
  • Lanskap dan intuisi pada deteksi objek dengan R-CNN, RetinaNet, SSD, dan YOLO yang Lebih Cepat
  • Instance dan segmentasi semantik
  • Pengenalan Objek Real-Time dengan YOLOv5
  • Melatih Detektor Objek YOLOv5
  • Bekerja dengan Transformers menggunakan KerasNLP (perpustakaan WIP kekuatan industri)
  • Mengintegrasikan Transformer dengan ConvNets untuk menghasilkan keterangan gambar
  • Deepdream

Kesimpulan

Dalam panduan singkat ini, kita telah melihat from_logits argumen untuk kelas kehilangan Keras, yang seringkali menimbulkan pertanyaan dengan praktisi baru.

Kebingungan mungkin muncul dari sintaks singkat yang memungkinkan penambahan lapisan aktivasi di atas lapisan lain, dalam definisi lapisan itu sendiri. Kami akhirnya melihat kapan argumen harus disetel ke True or False, dan ketika output harus dibiarkan sebagai log atau melewati fungsi aktivasi seperti SoftMax.

Stempel Waktu:

Lebih dari penyalahgunaan