Keras/TensorFlow Kayıp İşlevlerinde 'from_logits=True' nedir? PlatoBlockchain Veri Zekası. Dikey Arama. Ai.

Keras/TensorFlow Kayıp İşlevlerinde 'from_logits=True' nedir?

Keras gibi Derin Öğrenme çerçeveleri, kitleler için giriş engelini azaltır ve DL modellerinin geliştirilmesini, makul varsayılanlara ve basitleştirilmiş API'lere güvenerek ağır kaldırmanın yükünü taşımak ve iyi sonuçlar üretmek için deneyimsiz kişiler için demokratikleştirir.

Sınıflandırma için Keras kayıp işlevlerini kullanırken, daha yeni derin öğrenme uygulayıcıları arasında yaygın bir karışıklık ortaya çıkar, örneğin: CategoricalCrossentropy ve SparseCategoricalCrossentropy:

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

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

Ne yapar from_logits bayrak referans?

Cevap oldukça basit, ancak kayıp fonksiyonunu kullanarak derecelendirmeye çalıştığımız ağın çıktısına bir göz atmayı gerektiriyor.

Logits ve SoftMax Olasılıkları

Uzun lafın kısası:

Olasılıklar normalleştirilir - yani arasında bir aralık vardır [0..1]. Logitler normalleştirilmemiştir ve aşağıdakiler arasında bir aralığa sahip olabilir: [-inf...+inf].

Ağınızın çıktı katmanına bağlı olarak:

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

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

Çıktısı Dense katman olacak ya dönüş:

  • olasılıkları: Çıktı, çıktıyı bir dizi olasılıkta normalleştiren bir SoftMax işlevinden geçirilir. n, bunların hepsi 1.
  • logit: n aktivasyonlar.

Bu yanlış anlama, muhtemelen bir katmana aktivasyon eklemenize izin veren kısa el sözdiziminden kaynaklanmaktadır. görünüşte tek bir katman olarak, sadece kısa yol olmasına rağmen:

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

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

Kayıp fonksiyonunuz, normalleştirilmiş bir dağılım (bir SoftMax işlevinden geçirilen çıktı) veya logit beklemesi gerekip gerekmediği konusunda bilgilendirilmelidir. Bu nedenle, from_logits bayrak!

Ne zaman from_logits=Doğru?

Ağınız çıkış olasılıklarını normalleştirirse, kayıp fonksiyonunuz ayarlanmalıdır. from_logits için False, logit kabul etmediği için. Bu aynı zamanda bayrağı kabul eden tüm kayıp sınıflarının varsayılan değeridir, çünkü çoğu kişi bir activation='softmax' çıktı katmanlarına:

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)

Bunun sonucu:

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)

Bu ağ normalleştirilmiş bir dağılımla sonuçlandığından – çıktıları hedef çıktılarla karşılaştırırken ve bunları bir sınıflandırma kaybı fonksiyonu aracılığıyla derecelendirirken (uygun görev için) – ayarlamalısın from_logits için Falseveya varsayılan değerin kalmasına izin verin.

Öte yandan, ağınız çıktıya SoftMax uygulamıyorsa:

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)

Bunun sonucu:

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)

ayarlamanız gerekir from_logits için True kayıp fonksiyonunun çıktıları uygun şekilde işlemesi için.

Çıktıda SoftMax Ne Zaman Kullanılır?

Çoğu uygulamacı, normalleştirilmiş bir olasılık dağılımı vermek için çıktıya SoftMax uygular, çünkü çoğu durumda bir ağı bunun için kullanacaksınız – özellikle basitleştirilmiş eğitim materyallerinde. Ancak bazı durumlarda siz değil mi SoftMax veya başka bir işlevi uygulamadan önce işlevi çıktıya uygulamak, farklı bir şekilde işlemek istiyorsanız.

Dikkate değer bir örnek, çıktı tensöründe gerçekten büyük bir kelime dağarcığı üzerinde bir olasılığın bulunabileceği NLP modellerinden gelir. SoftMax'in üzerine uygulama hepsi ve açgözlülükle almak argmax genellikle çok iyi sonuçlar vermez.

Bununla birlikte, logitleri gözlemlerseniz, Top-K'yi çıkarın (burada K herhangi bir sayı olabilir, ancak genellikle arasında bir yerdedir). [0...10]) ve yalnızca bundan sonra SoftMax'i üst-k kelime dağarcığındaki olası belirteçler dağılımı önemli ölçüde değiştirir ve genellikle daha gerçekçi sonuçlar verir.

En iyi uygulamalar, endüstri tarafından kabul edilen standartlar ve dahil edilen hile sayfası ile Git'i öğrenmek için uygulamalı, pratik kılavuzumuza göz atın. Googling Git komutlarını durdurun ve aslında öğrenmek o!

Bu, Top-K örneklemesi olarak bilinir ve ideal strateji olmasa da, genellikle açgözlü örneklemeden önemli ölçüde daha iyi performans gösterir.

Daha İleri Gitmek – Bilgisayarla Görme için Pratik Derin Öğrenme

Meraklı doğanız daha ileri gitmek istemenizi sağlıyor mu? bizim kontrol etmenizi öneririz Kurs: “Python ile Bilgisayarla Görme için Pratik Derin Öğrenme”.

Başka Bir Bilgisayarla Görme Kursu mu?

MNIST rakamları veya MNIST modası sınıflandırması yapmayacağız. Uzun zaman önce rollerine hizmet ettiler. Çok fazla öğrenme kaynağı, gelişmiş kara kutu mimarilerinin performans yükünü omuzlamasına izin vermeden önce temel veri kümelerine ve temel mimarilere odaklanıyor.

odaklanmak istiyoruz gizemden arındırma, pratiklik, anlayış, sezgi ve gerçek projeler. Öğrenmek istemek Nasıl bir fark yaratabilirsin? Beynimizin görüntüleri işleme biçiminden meme kanseri için araştırma düzeyinde bir derin öğrenme sınıflandırıcısı yazmaya, “halüsinasyon” gören derin öğrenme ağlarına, size ilkeleri ve teoriyi pratik çalışmalarla öğreterek, sizi aşağıdaki bilgilerle donatmaya kadar bir yolculuğa çıkaracağız. bilgisayar vizyonunu çözmek için derin öğrenmeyi uygulamada uzman olmak için teknik bilgi ve araçlar.

İçinde ne var?

  • Görmenin ilk ilkeleri ve bilgisayarlara “görmeyi” nasıl öğretebiliriz?
  • Bilgisayarla görmenin farklı görevleri ve uygulamaları
  • İşinizi kolaylaştıracak ticaret araçları
  • Bilgisayarla görü için veri kümelerini bulma, oluşturma ve kullanma
  • Evrişimli Sinir Ağlarının teorisi ve uygulaması
  • Veri kümelerinde etki alanı kayması, birlikte oluşma ve diğer önyargıları işleme
  • Öğrenimi aktarın ve başkalarının eğitim süresini ve hesaplama kaynaklarını kendi yararınıza kullanın
  • Son teknoloji bir meme kanseri sınıflandırıcısı oluşturmak ve eğitmek
  • Ana akım fikirlere sağlıklı bir şüphecilik dozu nasıl uygulanır ve yaygın olarak benimsenen tekniklerin sonuçları nasıl anlaşılır?
  • t-SNE ve PCA kullanarak ConvNet'in “kavram uzayını” görselleştirme
  • Şirketlerin daha iyi sonuçlar elde etmek için bilgisayarlı görme tekniklerini nasıl kullandıklarına dair vaka çalışmaları
  • Uygun model değerlendirmesi, gizli uzay görselleştirmesi ve modelin dikkatinin belirlenmesi
  • Alan araştırması yapmak, kendi veri kümelerinizi işlemek ve model testleri oluşturmak
  • Son teknoloji mimariler, fikirlerin ilerlemesi, onları benzersiz kılan nedir ve nasıl uygulanacağı
  • KerasCV – son teknoloji işlem hatları ve modeller oluşturmak için bir WIP kitaplığı
  • Makaleleri nasıl ayrıştırıp okuyabilir ve bunları kendiniz uygulayabilirsiniz
  • Uygulamanıza bağlı olarak model seçimi
  • Uçtan uca bir makine öğrenimi ardışık düzeni oluşturma
  • Daha Hızlı R-CNN'ler, RetinaNet'ler, SSD'ler ve YOLO ile nesne algılamada manzara ve sezgi
  • Örnek ve anlamsal segmentasyon
  • YOLOv5 ile Gerçek Zamanlı Nesne Tanıma
  • YOLOv5 Nesne Dedektörlerinin Eğitimi
  • KerasNLP (endüstri gücünde WIP kitaplığı) kullanarak Transformers ile çalışma
  • Görüntülerin altyazılarını oluşturmak için Transformers'ı ConvNets ile entegre etme
  • DeepDream

Sonuç

Bu kısa kılavuzda, aşağıdakilere bir göz attık: from_logits Keras kayıp sınıfları için argüman, çoğu zaman daha yeni uygulayıcılarla soru soruyor.

Karışıklık muhtemelen, bir katmanın kendi tanımı içinde, aktivasyon katmanlarının diğer katmanların üzerine eklenmesine izin veren kısa el sözdiziminden kaynaklanmaktadır. Sonunda argümanın ne zaman ayarlanması gerektiğine bir göz attık. True or Falseve bir çıktının logit olarak bırakılması veya SoftMax gibi bir etkinleştirme işlevinden geçirilmesi gerektiği zaman.

Zaman Damgası:

Den fazla Yığın kötüye kullanımı