Keras ile Derin Öğrenme: Keras ile Sinir Ağı Eğitimi [Kodlu]
Yayınlanan: 2020-12-24Keras, Sinir Ağları ve Derin Öğrenme çerçeveleriyle çalışmak için bir API sağlayan bir Python kitaplığıdır. Keras, Python'da çeşitli Derin Öğrenme uygulamalarıyla uğraşırken son derece kullanışlı işlevler ve modüller sağlar.
Bu eğitimin sonunda, aşağıdakiler hakkında bilgi sahibi olacaksınız:
- Keras nedir?
- Keras API'leri
- Keras'ta Sinir Ağı Eğitimi
İçindekiler
Keras nedir?
Derin Öğrenme yapmak için, daha önce en çok kullanılan kitaplık, yeni başlayanlar için uğraşması zor olan Tensorflow 1.x idi. Basit bir 1 katmanlı ağ oluşturmak için çok fazla kodlama gerekiyordu. Ancak Keras ile, bir Sinir Ağının yapısını yapma ve ardından eğitim ve izleme sürecinin tamamı son derece kolay hale geldi.
Keras, Tensorflow, Theano ve CNTK arka ucunda çalışabilen üst düzey bir API'dir. Bize, üst düzey ve kullanıcı dostu API kullanarak sinir ağlarını kullanarak deneyler yürütme yeteneği verir. Ayrıca CPU'larda ve GPU'larda çalışabilir.
Keras API'leri
Keras, sinir ağlarının modellenmesi ve eğitilmesi için tasarlanmış 10 farklı API modülüne sahiptir. Tüm Keras'ın neler sunabileceğini anlamak için her birinin üzerinden geçelim.
Modeller
Modeller API'si, katmanlar ekleyerek/kaldırarak karmaşık sinir ağları oluşturma işlevselliği sağlar. Model Sıralı olabilir, yani katmanlar sırayla tek giriş ve çıkışla yığılır. Model ayrıca tamamen özelleştirilebilir modellerle işlevsel olabilir. Bu, endüstride en çok kullanılan şeydir.

API ayrıca, optimize edici ve kayıp fonksiyonu ile birlikte modeli derlemek için yöntemler, modele uygun bir yöntem, yeni verileri değerlendirmek ve tahmin etmek için bir yöntem sağlayan eğitim modülüne de sahiptir. Ayrıca, bir toplu veri üzerinde eğitim, test etme ve tahmin etme yöntemlerine de sahiptir. Models API ayrıca modellerin kaydedilmesi ve serileştirilmesine de sahiptir.
Katmanlar
Katmanlar, herhangi bir sinir ağının yapı taşlarıdır. Katmanlar API'si, sinir ağı mimarisini oluşturmak için eksiksiz bir yöntem seti sunar. Katmanlar API'si, özel ağırlıklar ve başlatıcılarla özel katmanlar oluşturmak için gereken yöntemleri içeren Temel Katman sınıfına sahiptir.
ReLU, Sigmoid, Tanh, Softmax vb. gibi çeşitli etkinleştirme işlevlerinden oluşan Layer Activations sınıfını içerir. Layer Weight Initializers sınıfı, ağırlıkları farklı yollar kullanarak başlatmak için yöntemler sunar.
Ayrıca, Yoğun katman, Aktivasyon Katmanı, Gömme katmanı vb. gibi çekirdek katmanları eklemek için gereken sınıflardan oluşan Core Layers sınıfından oluşur. Convolution Layer sınıfı, farklı türlerde Convolution katmanları eklemek için çeşitli yöntemler sunar. Pooling Layers sınıfı, Max Pooling, Ortalama Pooling, Global Max Pooling ve Global Ortalama Pooling gibi farklı havuzlama türleri için gereken yöntemleri içerir.
geri aramalar
Geri aramalar, modelin eğitim sürecini izlemenin bir yoludur. Geri Arama etkinleştirildiğinde, bir dönemin veya toplu işin bitiminden önce veya sonra çeşitli eylemler gerçekleştirilebilir. Geri aramalarla şunları yapabilirsiniz:
- TensorFlow Board'da ölçümleri günlüğe kaydederek eğitim ölçümlerini izleyin
- Modeli periyodik olarak diske kaydetme
- Belirli bir çağdan sonra kaybın önemli ölçüde azalmaması durumunda erken durdurma
- Eğitim sırasında bir modelin dahili durumlarını ve istatistiklerini görüntüleyin
Veri Kümesi Ön İşleme
Veriler genellikle ham formattadır ve düzenlenmiş dizinlerde bulunur ve yerleştirme için modele beslenmeden önce ön işleme tabi tutulmaları gerekir. Image Data Preprocessing sınıfının buna benzer birçok özel işlevi vardır. Örneğin, görüntü verilerinin, img_to_array işlevini kullanabileceğimiz sayısal dizide olması gerekir. Veya görüntüler bir dizin ve alt klasörler içinde mevcutsa, image_dataset_from_directory işlevini kullanabiliriz.
Veri Ön İşleme API'sinde ayrıca Zaman Serisi verileri ve metin verileri için de sınıflar bulunur.
Optimize Ediciler
Optimize ediciler, herhangi bir sinir ağının belkemiğidir. Her sinir ağı, tahmin için en iyi ağırlıkları bulmak için bir kayıp fonksiyonunu optimize etmeye çalışır. Optimal ağırlıkları bulmak için biraz farklı teknikleri takip eden çok sayıda optimize edici vardır. Tüm bu optimize ediciler, Optimize Edici API'sinde mevcuttur – SGD, RMSProp, Adam, Adadelta, Adagrad, Adamax, Nadal, FTRL.
kayıplar
Bir model derlenirken kayıp fonksiyonlarının belirtilmesi gerekir. Bu kayıp işlevi, derleme yönteminde de parametre olarak geçirilen optimize edici tarafından optimize edilecektir. Üç ana kayıp sınıfı: Olasılıksal Kayıplar, Regresyon kayıpları, Menteşe kayıpları.
Metrikler
Her ML modelinde, test verileri üzerindeki performansını ölçmek için metrikler kullanılır. Metrikler, test verilerinde kullanılmaları dışında Kayıp İşlevlerine benzer. Doğruluk, İkili Doğruluk, Kategorik Doğruluk vb. gibi birçok Doğruluk metriği mevcuttur. Ayrıca İkili Çapraz Entropi, Kategorik Çapraz Entropi vb. gibi Olasılıksal metrikleri de içerir. AUC gibi yanlış pozitifleri/negatifleri kontrol etmek için metrikler vardır, Hassasiyet, Geri Çağırma vb.
Bu sınıflandırma ölçütlerinin yanı sıra Ortalama Kare Hata, Ortalama Kare Hata Kök, Ortalama Mutlak Hata vb. regresyon ölçütlerine de sahiptir.
Ayrıca Okuyun: Keras ve TensorFlow Nedir?
Keras Uygulamaları
Keras Applications sınıfı, önceden eğitilmiş ağırlıklarla birlikte bazı önceden oluşturulmuş modellerden oluşur. Bu önceden eğitilmiş modeller, Transfer Öğrenme süreci için kullanılır. Bu önceden eğitilmiş modeller, mimariye, katman sayısına, eğitilebilir ağırlıklara vb. bağlı olarak farklıdır. Bunlardan bazıları Xception, VGG16, Resnet50, MobileNet vb.'dir.

Keras ile Sinir Ağı Eğitimi
Keras'ın veri kümeleri sınıfında bulunan MNIST gibi basit bir veri kümesini ele alalım. 0-9 arasındaki rakamların elle yazılmış görüntülerini sınıflandırmak için basit bir sıralı Evrişimli Sinir Ağı yapacağız.
#Veri kümesi yükleniyor keras.datasets'den içe aktarma mnist'i (x_train, y_train), (x_test, y_test) = mnist.load_data() |
Her pikseli 255'e bölerek veri setini normalleştirmek. Ayrıca görüntüleri bir CNN modeline beslemeden önce 4 boyuta dönüştürmek gerekiyor.
x_train = x_train.astype( 'float32' ) x_test = x_test.astype( 'float32' ) x_train /= 255 x_test /= 255 x_train = X_train.reshape(X_train.shape[ 0 ], 28 , 28 , 1 ) x_test = X_test.reshape(X_test.shape[ 0 ], 28 , 28 , 1 ) |
Modele beslemeden önce sınıfları etiketlememiz gerekiyor. Bunu Keras' Utils sınıfını kullanarak yapacağız.
keras.utils'den to_categorical'ı içe aktar
|
Artık Sequential API kullanarak modeli oluşturmaya başlayabiliriz.
keras.models'den sıralı içe aktar keras.layers'dan içe aktar Conv2D , MaxPool2D, Dense, Flatten, Dropout model = Sequential() model.add(Conv2D(filters= 32 , kernel_size=( 5 , 5 ), activation= 'relu' , input_shape=x_train.shape[ 1 :))) model.add(MaxPool2D(havuz_boyutu=( 2 , 2 ))) model.add(Bırakma(oran= 0.25 )) model.add(Conv2D(filters= 64 , kernel_size=( 3 , 3 ), activation= 'relu' )) model.add(MaxPool2D(havuz_boyutu=( 2 , 2 ))) model.add(Bırakma(oran= 0.25 )) model.add(Düzleştir()) model.add(Yoğun( 256 , activation= 'relu' )) model.add(Bırakma(oran= 0,5 )) model.add(Yoğun( 10 , activation= 'softmax' )) |
Yukarıdaki kodda, sıralı bir model ilan ediyoruz ve ardından buna birden çok katman ekliyoruz. Evrişim katmanı, ardından bir Max Pooling katmanı ve ardından düzenlileştirme için bir bırakma katmanı. Daha sonra düzleştirme katmanını kullanarak çıktıyı düzleştiririz ve son katman 10 düğümlü tam bağlantılı yoğun bir katmandır.
Ardından, kayıp fonksiyonunu, optimize ediciyi ve metriği geçerek onu derlememiz gerekiyor.
model.derle( kayıp= 'categorical_crossentropy' , optimizer= 'adam' , metrikler=[ 'doğruluk' ] ) |
Şimdi eğitim setini ve modelin doğruluğunu artırmak için orijinal görüntülerden artırılmış görüntüler eklememiz gerekecek. Bunu ImageDataGenerator işlevini kullanarak yapacağız.
keras.preprocessing.image'den ImageDataGenerator'ı içe aktarın datagen = ImageDataGenerator( rotasyon_aralığı= 10 , zoom_range= 0.1 , genişlik_kaydırma_aralığı= 0.1 , height_shift_range= 0.1 ) |
Artık model derlendiğine ve görüntüler artırıldığına göre eğitim sürecine başlayabiliriz. Yukarıda bir Image Data Generator kullandığımız için, fit_generator yöntemini sadece sığdırmak yerine kullanacağız.

çağ = 3 parti_boyutu = 32 geçmiş = model.fit_generator( datagen.flow(x_train, y_train, batch_size=batch_size), epochs=çağlar, validation_data=(x_test, y_test), step_per_epoch=x_train.shape[ 0 ]//batch_size ) |
Eğitim sürecinin çıktısı aşağıdaki gibidir:
3Artık model eğitilmiştir ve görünmeyen test verileri üzerinde çalıştırılarak değerlendirilebilir.
İlgili Okuma: Keras ile Derin Öğrenme ve Sinir Ağları
Gitmeden önce
Bu eğitimde, Keras'ın ne kadar iyi yapılandırıldığını ve karmaşık bir sinir ağının oluşturulmasını kolaylaştırdığını gördük. Keras şimdi Tensorflow 2.x'in altına sarılmış ve bu da ona daha da fazla özellik kazandırıyor. Bu tür daha fazla örnek deneyin ve Keras'ın işlevlerini ve özelliklerini keşfedin.
Makine öğrenimi hakkında daha fazla bilgi edinmek istiyorsanız, çalışan profesyoneller için tasarlanmış ve 450+ saat zorlu eğitim, 30'dan fazla vaka çalışması ve ödev, IIIT- sunan IIIT-B & upGrad'ın Makine Öğrenimi ve Yapay Zeka PG Diplomasına göz atın. B Mezun statüsü, 5+ pratik uygulamalı bitirme projesi ve en iyi firmalarla iş yardımı.