Bu makale ile, sinir ağları kısmının programlamasına başlıyoruz. Keras ile başlayacağız. Keras, bugün en popüler Derin Öğrenme kütüphanelerinden birisidir.
Keras ile ilk sinir ağı modelimizi oluşturmaya başlamadan önce, Keras sequential modelinde 2 yoldan giriş katmanı tanımlamayı tartışacağız.
Sıralı modellerde, giriş gizli ve çıkış katmanları modelde sıralı olarak yığınlanmıştır. (aynı adı gibi.) Bilgi, girdiden çıktıya gizli katmanlar aracılığıyla yayılır. Geri yayılım yoluyla geri besleme yalnızca çıkış katmanında gerçekleşir ve ara gizli katmanlar arasında geri besleme yoktur. Sıralı modeller (sequential model) aynı zamanda “ileri beslemeli sinir ağları (FFNN)” modelleri olarak da bilinir.
Keras’ta, sıralı modeller Sequential() sınıfı kullanarak inşa edilir.
from tensorflow.keras import Sequential model=Sequential() |
Keras’ta Katman tipleri :
Keras katmanları için birçok olası opsiyonlar vardır. Bugün ikisini ele alacağız.
- InputLayer
- Dense
InputLayer :
Bir Keras sıralı modelinin giriş katmanını açıkça tanımlamak için InputLayer() sınıfını kullanabiliriz. Aşağıdaki argümanlara sahiptir.
- input_shape : gerekli argümandır
- name : opsiyonel argümandır
Gizli katmanlar ve çıkış katmanı, modele Dense() sınıfı kullanarak eklenebilmektedir.
Şimdi, iki gizli katmanlı Keras sequential modeli tanımlıyoruz.
Not :Çalışmalarınızı Google colab ile gerçekleştirebilirsiniz. https://colab.research.google.com/
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import InputLayer from tensorflow.keras.layers import Dense model = Sequential() model.add(InputLayer(input_shape=(784, ), name=’Input_Layer’)) model.add(Dense(512, activation=’relu’, name=’Hidden_Layer_1′)) model.add(Dense(256, activation=’relu’, name=’Hidden_Layer_2′)) model.add(Dense(10, activation=’softmax’, name=’Output_Layer’)) |
Model mimarimizi görselleştirelim.
Görselleştirme işlemini yaparken kerasın araçlarından faydalanacağız.
plot_model içindeki argümanlara bakalım.
model değeri, modelimizi ifade eder. model.png dosyası olarak oluşturmasını belirtiyoruz. katman isimlerini göstersin True, dpi : ölçek için değerdir.
from tensorflow.keras.utils import plot_model plot_model(model, to_file=’model.png’, show_shapes=True, dpi=100, show_layer_names=True) |
show_shapes=False olduğunda, şekil göstermez
show_shapes True olduğunda elde edilen çıktı.
Dense :
Dense katmanları tam bağlantılı katmanlardır. Modele Dense() sınıfı kullanılarak eklenilebilir. Aşağıdaki argümanlara sahiptir.
- units : gerekli argümandır. Bu, katmandaki düğümlerin (birimlerin) sayısını gösterir. Bu pozitif bir tamsayı (integer) alır.
- input_shape : gizli katman ve çıkış katmanı zorunlu değildir. Ancak, eğer InputLayer() sınıfını kullanarak açık bir şekilde giriş katmanı tanımlanmadıysa, ilk katman için gereklidir.
- activation : katmandakullanılacak aktivasyon fonksiyonun türü. None, aktivasyon olmadığı anlamına gelir.
- name : opsiyonel argümandır
Gizli katmanlar ve çıkış katmanının modele Dense() sınıfı kullanarak ekleneceğini söylemiştik. Giriş katmanı da dense layer olarak tanımlanabilir.
input_shape, ilk dense layer’a tanımlandığında, Keras arkaplanda model için bir giriş katmanı ekler. Bu InputLayer() sınıfını kullanarak giriş katmanını tanımlamakla tam olarak aynıdır. |
Modeli benzer şekilde görselleştirelim.
from tensorflow.keras.utils import plot_model
plot_model(model, to_file=’model.png’,
show_shapes=True, dpi=100,
show_layer_names=True)
Açıkça giriş katmanını tanımlamasak bile Dense() sınıfı ile Keras tarafından arka planda input_shape ile eklemesi gerçekleşti.
Özet :
Keras’ta, sequential model(sıralı model) Sequential() sınıfı kullanarak inşa edilir. Modele add() metodu kullanarak katmanlar ekleyebiliriz. Tüm katmanlar, dense layer’lar olarak tanımlanabilir. Fakat, giriş katmanını tanımlamak için 2 opsiyon vardır. InputLayer() sınıfı kullanarak açıkça tanımlayabiliriz ya da Dense() sınıfını input_shape() argümanı ile beraber kullanarak arka planda giriş katmanını ekleyebiliriz.