[Xinzhiyuan Kılavuzu] Keras yazarı François Chollet bugün bir dizi tweet yayınladı Derin öğrenme araştırması için TensorFlow 2.0 + Keras kullanıyorsanız, bilmeniz gereken her şey burada.
TensorFlow 2.0, birkaç gün önce yayınlandı ve ilk olarak Alpha sürümü kullanılabilir. Yeni sürümün kullanımı kolay ve genişletilebilir, API'yi büyük ölçüde basitleştirir.
Keras yazarı François Chollet, bugün TensorFlow 2.0 + Keras'ı kullanmak için bazı önemli teknikleri 12 örnekle açıklayan bir dizi tweet yayınladı.
Derin öğrenme araştırması için TF 2.0 + Keras kullanıyorsanız, bilmeniz gereken her şey burada.
François Chollet tarafından Keras
1) Bilmeniz gereken ilk sınıf "Katman" dır. Bir Katman, bir durumu (ağırlık) ve bazı hesaplamaları ("çağrı" yönteminde tanımlanan) içerir.
2) "add_weight" yöntemi, ağırlıkların oluşturulması için bir kısayol sağlar.
3) Ağırlıkları ayrı bir "inşa" yönteminde oluşturmak ve bu yöntemi katmanınız tarafından görülen ilk girişin şeklini kullanarak çağırmak en iyisidir. Bu mod, bizi "input_dim" belirtme zorunluluğundan kurtarır:
4) GradientTape'de katmanı çağırarak katmanın ağırlık gradyanını otomatik olarak alabilirsiniz. Bu degradeleri kullanarak, katmanın ağırlığını manuel olarak veya optimize edici nesneyi kullanarak güncelleyebilirsiniz. Elbette, degradeleri kullanmadan önce bunları değiştirebilirsiniz.
5) Katmanlar tarafından oluşturulan ağırlıklar eğitilebilir veya eğitilemez olabilir. Eğitilebilir olup olmadığı, katmanın "trainable_weights" ve "non_trainable_weights" özelliklerinde görülebilir. Örneğin, bu, eğitilemeyen ağırlıklara sahip bir katmandır:
6) Katmanlar, daha büyük hesaplama blokları oluşturmak için özyinelemeli olarak yuvalanabilir. Her katman, alt katmanlarının ağırlıklarını (eğitilebilir ve eğitilemeyenler dahil) takip edecektir.
7) Katman, ileri geçiş sırasında bir kayıp yaratacaktır. Bu, özellikle düzenlilik kayıpları için kullanışlıdır. Alt katman tarafından oluşturulan kayıp, ana katman tarafından özyinelemeli olarak izlenir.
8) Bu kayıplar her ileri geçişin başlangıcında üst katman tarafından temizlenir - birikmezler. "Layer.losses" her zaman yalnızca "son" ileri geçişte meydana gelen kayıpları içerir. Bir eğitim döngüsü yazarken, genellikle bu kayıpları toplamanız gerekir.
9) TF 2.0, varsayılan olarak isteklidir. Ancak hesaplamaları statik grafikler halinde derleyerek daha iyi performans elde edilebilir. Statik resim, araştırmacının en iyi arkadaşıdır! Herhangi bir işlevi bir tf işlevinin içine alarak derleyebilirsiniz:
10) Bazı katmanlar, özellikle "BatchNormalization" katmanı ve "Dropout" katmanı, eğitim ve çıkarım sırasında farklı davranışlar sergiler. Bu tür katmanlar için standart uygulama, "çağrı" yöntemine bir "eğitim" (boolean) parametresi eklemektir.
11) Yoğun katmanından Conv2D katmanına, LSTM katmanına, Conv2DTranspose veya ConvLSTM2D'ye kadar birçok yerleşik katman mevcuttur. Bu yerleşik işlevleri yeniden kullanmayı öğrenmelisiniz.
12) Bir derin öğrenme modeli oluşturmak için her zaman nesne yönelimli programlamayı kullanmak zorunda değilsiniz. Şimdiye kadar gördüğümüz tüm katmanlar işleve göre şu şekilde birleştirilebilir (buna "İşlevsel API" diyoruz):
İşlevsel API'ler, alt sınıflara göre daha özlü olma eğilimindedir ve başka avantajlara sahiptir.
Functional API hakkında daha fazla bilgi edinin:
https://www.tensorflow.org/alpha/guide/keras/functional
Ancak, lütfen işlevsel API'lerin yalnızca DAG katmanlarını tanımlamak için kullanılabileceğini unutmayın - özyinelemeli ağlar "Katman" alt sınıfları olarak tanımlanmalıdır.
Araştırma çalışmanızda, kendinizi çoğu zaman OO modellerini ve işlevsel modelleri karıştırırken ve eşleştirirken bulabilirsiniz.
Yukarıdakiler, çoğu derin öğrenme araştırma makalesi için gereken tüm içeriği yeniden uygulamak için TensorFlow 2.0 + Keras'ı kullanmaktır!
Şimdi çok basit bir örneğe bakalım: hiper ağlar .
Bir hiper ağ, ağırlıkları başka bir ağ tarafından oluşturulan (genellikle daha küçük) derin bir sinir ağıdır.
Çok basit bir hiper ağ uygulayalım: Daha önce tanımlanan "Doğrusal" katmanı kullanacağız ve onu başka bir "Doğrusal" katman oluşturmak için kullanacağız.
Başka bir hızlı örnek: VAE'yi alt sınıflandırma veya işlevsel API olmak üzere herhangi bir tarzda uygulayın. Size en uygun yöntemi bulun!
alt sınıflandırma
Fonksiyonel API
Son olarak, bu kod örneklerini bu Colab not defterinde kullanabilirsiniz:
https://colab.research.google.com/drive/17u-pRZJnKN0gO5XZmq8n5A2bKGrfKEUg