CNN Mimarileri Nedir ve Nasıl Kullanılır?| Python Dunyasi
pythondunyasi tarafından Kasım 27, 2019 Kasım 27, 2019 tarihinde yayınlandı
Bilgisayarlar görüntüleri kullanarak pikselleri görür. Görüntülerdeki pikseller genellikle birbirine bağlıdır. Örneğin, belirli bir piksel grubu görüntüdeki bir kenarı veya başka bir desen gösterebilir. Convolts bunu görüntüleri tanımlamaya yardımcı olmak için kullanır.
Convolution, piksel matrisini filtre matrisi veya “çekirdek” ile çarpar ve çarpma değerlerini toplar. Daha sonra evrişim bir sonraki piksele hareket eder ve görüntüdeki tüm pikseller kaplanana kadar aynı işlemi tekrarlar. Bu süreç aşağıda sunulmuştur.
Bu derste, popüler mnist veri setini kullanacağız. Bu veri seti 0’dan 9’a kadar 70.000 el yazısı rakamından oluşuyor. Bunları CNN mimarileri kullanarak tanımlamaya çalışacağız.
Veri Setini İndirmek
Mnist veri kümesi bize Keras kütüphanesinin bir parçası olarak rahatça sunulur, böylece veri setini kolayca indirebiliriz. Veri setinde sunulan 70.000 görüntüden 60.000’i eğitim, 10.000’i test amaçlıdır.
Aşağıdaki veri kümesini yüklediğimizde, X_train ve X_test görüntüleri içerecek ve y_train ve y_test bu görüntüleri temsil eden sayıları içerecektir.
Şimdi neyin üzerinde çalıştığımızı görmek için veri setimizdeki resimlerden birine bakalım. İlk görüntüyü veri kümemize yerleştiririz ve şekil işlevini kullanarak boyutunu kontrol ederiz.
Varsayılan olarak, mnist veri kümesindeki her görüntünün şekli 28 x 28’dir, bu nedenle tüm görüntülerin şeklini kontrol etmemize gerek yoktur. Gerçek veri setlerini kullanırken, şanslı olmayabilirsin. 28 x 28 aynı zamanda oldukça küçük bir boyutta olduğundan, CNN mimarileri her görüntüyü hızlı bir şekilde çalıştırabilir.
Daha sonra veri setimizin (X_train ve X_test) girişlerini, modeli eğitirken modelimizin beklediği forma dönüştürmemiz gerekiyor. İlk sayı, görüntülerin sayısıdır (X_train için 60.000 ve X_test için 10.000). Sonra her görüntünün şekli gelir (28×28). Son sayı 1’dir; bu, görüntülerin gri tonlarında olduğu anlamına gelir.
Hedef değişkenimizin “bir sıcak kodlamasına” ihtiyacımız var. Bu, her çıktı kategorisi için bir sütun oluşturulacağı ve her kategori için bir ikili değişken girildiği anlamına gelir. Örneğin, veri kümesindeki ilk görüntünün 5 olduğunu gördük. Bu, dizimizdeki altıncı sayının 1 olacağı ve dizinin geri kalanının 0 ile doldurulacağı anlamına gelir.
Şimdi modelimizi oluşturmaya hazırız. Kullanacağımız model türü tutarlı. Seri, Keras’ta bir model oluşturmanın en kolay yoludur. Bu, bir katman model katman oluşturmanıza olanak sağlar.
İlk 2 katmanımız Conv2D katmanlarıdır. Bunlar, iki boyutlu matrisler olarak kabul edilen girdi görüntülerimizle çalışacak evrim katmanlarıdır.
İlk seviye 64 ve ikinci seviye 32, her düzeydeki düğüm sayısıdır. Bu sayı, veri setinin boyutuna bağlı olarak daha büyük veya daha küçük olarak değiştirilebilir. Bizim durumumuzda 64 ve 32 iyi çalışıyor, bu yüzden şimdilik buna bağlı kalacağız.
Çekirdek boyutu, evrimimiz için filtre matrisinin boyutudur. Böylece, göbeğin 3 boyutu, 3×3 filtre matrisine sahip olacağımız anlamına gelir. Bu konuda sürekli eğitim için giriş ve ilk resme bakınız.
İlk katmanımız aynı zamanda bir girdi formu alıyor. Bu, daha önce gösterildiği gibi her giriş görüntüsünün şekli olan 28, 28, 1’dir; burada 1, görüntülerin gri tonlara sahip olduğu anlamına gelir.
Conv2D katmanları ve yoğun katman arasında Düzleştirici katman vardır. Yassılaştır, evrişim ve yoğun tabakalar arasında bir bağlantı görevi görür.
Yoğun, çıktı katmanımız için kullanacağımız katman türüdür. Yoğun, sinir ağları için birçok durumda kullanılan standart bir katman türüdür. Çıkış katmanımızda olası her sonuç için bir tane olmak üzere 10 düğüm olacaktır (0-9).
Aktivasyon “softmax” dır. Softmax, çıkışın 1’e kadar çıkmasını sağlar, böylece çıkış sinyali olasılık olarak yorumlanabilir. Daha sonra model, hangi seçeneğin en yüksek olasılıklara sahip olduğuna bağlı olarak tahminini yapacaktır.