CNN - Building a Model in Python

Kategori: Deep Learning , 04 Nisan 2020 , JanFranco


Python'da bir CNN modeli oluşturmak ve train etmek için keras kütüphanesini kullanacağız. İlk olarak kütüphanedeki methodları import edelim:


from keras.models import Sequential
from keras.layers import Dense, Flatten, Conv2D, MaxPooling2D
Flatten, Conv2D, MaxPooling2D gibi methodların ne işe yaradığını daha önceki yazılarımda gördük. İlk olarak modeli oluşturalım:


model = Sequential()
Modele katmanları ekleyelim:


model.add(Conv2D(32, kernel_size=(3,3), activation='relu', input_shape=input_shape))
model.add(Conv2D(64, kernel_size=(3,3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
İlk iki satırda 2 adet Convolutional Layer ekledik. İlk layerda 32 filtre mevcut ve filtrelerin boyutu 3x3. Aktivasyon fonksiyonu olarak ReLu kullandık. İkinci katmanda ise 64 filtre mevcut ve filtrelerin boyutu 3x3. Aktiasyon fonksiyonu olarak ReLu kullandık. Sonrasında Pooling katmanımız var ve kernel boyutu 2x2. Fully Connected Layer katmanını tanımlayalım:


model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(num_classes, activation='relu'))
Flatten methodu ile 2 boyutlu resimlerimizi tek boyutlu hale getirdik ve Dense methodu ile 128 bileşenli bir yapay sinir ağı katmanı oluşturduk. Modeli compile edelim:


model.compile(loss='categorical_crossentropy', optimizer=SGD(0.01), metrics=['accuracy'])
Modelimizi oluşturduktan sonra train edebilmek için compile etmeliyiz. Hata hesabının hangi yöntem ile yapılacağını girdik, optimizer olarak SGD kullandık. Learning rate değerini vermemiz zorunlu değildir, optimizerların zaten default learning rate değerleri mevcut ancak değiştirmek istersek argüman olarak direk gönderebiliriz. Metrikleri de tanımlamamız gerekli. Burada sadece accuracy yani doğruluk ölçütünü kullandık. Modeli train edelim:


model.fit(x_train, y_train, epochs=5, batch_size=32)
fit methodu ile modelimizi train edebiliriz. Verisetinden yüklediğimiz x_train ve y_train listelerini fit methoduna gönderiyoruz. Epoch ve batch_size değerlerini giriyoruz. Performansları daha detaylı ölçmek için ise evaluate methodunu kullanabiliriz:


lossAndMetrics = model.evaluate(x_test, y_test, batch_size=128)


Sonraki Yazı: CNN - Handwritten Digit Recognition
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın