Derin Öğrenme (Deep Learning) - Keras Modeli Derleme İşlemleri

Compile Method (Derleme Yöntemi)

Yayın tarihi :21-Şub-22
Bölüm kodlarını ve/veya veri setlerini indir.

Compile Method (Derleme Yöntemi), Keras kullanılarak oluşturulan modelleri derlemek için kullanılan yöntemdir.

Söz dizimi: Model.compile(optimizer="rmsprop", loss=None, metrics=None, loss_weights=None, weighted_metrics=None, run_eagerly=None, steps_per_execution=None, jit_compile=None,**kwargs)

  • optimizer, optimize edicileri temsil etmektedir. Keras kütüphanelerinden biri olan "optimizers" (from tensorflow.keras import optimizers) ile kullanılabilir optimize edicilere ulaşılabilir. Bunlar;
    • Adadelta, Adadelta algoritmasını uygulayan optimize edicidir.
    • Adagrad, Adagrad algoritmasını uygulayan optimize edicidir.
    • Adam, Adam algoritmasını uygulayan optimize edicidir.
    • Adamax, Adamax algoritmasını uygulayan optimize edicidir.
    • Ftrl, Ftrl algoritmasını uygulayan optimize edicidir.
    • Nadam, Nadam algoritmasını uygulayan optimize edicidir.
    • Optimizer, Keras optimize ediciler için temel sınıf.
    • RMSprop, RMSprop algoritmasını uygulayan optimize edicidir. (Varsayılan olarak seçilidir.)
    • SGD, Gradyan iniş (momentumlu) iyileştirici.
  • loss, kayıp fonksiyonu türünü temsil etmektedir. Keras kütüphanelerinden biri olan "losses" (from tensorflow.keras import losses) ile kullanılabilir kayıp fonksiyonlarına ulaşılabilir.
    • Regression(Regresyon) ve Sınıflandırma(Classification) işlemlerine göre kayıp fonksiyonu seçilmelidir. 
    • Kayıp fonksiyonları detaylı anlatım listesi için tıklayınız. 
    • Kullanılabilir kayıp fonksiyonları; 'BinaryCrossentropy', 'BinaryFocalCrossentropy', 'CategoricalCrossentropy', 'CategoricalHinge', 'CosineSimilarity', 'Hinge', 'Huber', 'KLD', 'KLDivergence', 'LogCosh', 'Loss', 'MAE', 'MAPE', 'MSE', 'MSLE', 'MeanAbsoluteError', 'MeanAbsolutePercentageError', 'MeanSquaredError', 'MeanSquaredLogarithmicError', 'Poisson', 'Reduction', 'SparseCategoricalCrossentropy', 'SquaredHinge', 'binary_crossentropy', 'binary_focal_crossentropy', 'categorical_crossentropy', 'categorical_hinge', 'cosine_similarity', 'deserialize', 'get', 'hinge', 'huber', 'kl_divergence', 'kld', 'kullback_leibler_divergence', 'log_cosh', 'logcosh', 'mae', 'mape', 'mean_absolute_error', 'mean_absolute_percentage_error', 'mean_squared_error', 'mean_squared_logarithmic_error', 'mse', 'msle', 'poisson', 'serialize', 'sparse_categorical_crossentropy', 'squared_hinge'
  • metrics, model performansını ölçmek ve değerlendirmek için kullanılan yapılardır. Keras kütüphanelerinden biri olan "metrics" (from tensorflow.keras import metrics) ile kullanılabilir metrik fonksiyonlarına ulaşılabilir.
    • Bir metrics içersinde birden fazla ölçme yöntemi bir arada kullanılabilir. Örneğin metrics=[metrics.mean_absolute_error, metrics.mean_absolute_error]
    • Bir fonksiyon yardımı ile kişisel değerlendirme yöntemleri oluşturulup tanımlanabilir.
      def customMetrics():
          #Gerekli işlemler yapılarak return ile döndürülür.
          testResult=""
          return testResult
      model.compile(loss=losses.binary_crossentropy, metrics=[customMetrics])

       

    • Kullanılabilir metrik yöntemleri; 'AUC', 'Accuracy', 'BinaryAccuracy', 'BinaryCrossentropy', 'BinaryIoU', 'CategoricalAccuracy', 'CategoricalCrossentropy', 'CategoricalHinge', 'CosineSimilarity', 'FalseNegatives', 'FalsePositives', 'Hinge', 'IoU', 'KLD', 'KLDivergence', 'LogCoshError', 'MAE', 'MAPE', 'MSE', 'MSLE', 'Mean', 'MeanAbsoluteError', 'MeanAbsolutePercentageError', 'MeanIoU', 'MeanMetricWrapper', 'MeanRelativeError', 'MeanSquaredError', 'MeanSquaredLogarithmicError', 'MeanTensor', 'Metric', 'OneHotIoU', 'OneHotMeanIoU', 'Poisson', 'Precision', 'PrecisionAtRecall', 'Recall', 'RecallAtPrecision', 'RootMeanSquaredError', 'SensitivityAtSpecificity', 'SparseCategoricalAccuracy', 'SparseCategoricalCrossentropy', 'SparseTopKCategoricalAccuracy', 'SpecificityAtSensitivity', 'SquaredHinge', 'Sum', 'TopKCategoricalAccuracy', 'TrueNegatives', 'TruePositives', 'binary_accuracy', 'binary_crossentropy', 'binary_focal_crossentropy', 'categorical_accuracy', 'categorical_crossentropy', 'deserialize', 'get', 'hinge', 'kl_divergence', 'kld', 'kullback_leibler_divergence', 'log_cosh', 'logcosh', 'mae', 'mape', 'mean_absolute_error', 'mean_absolute_percentage_error', 'mean_squared_error', 'mean_squared_logarithmic_error', 'mse', 'msle', 'poisson', 'serialize', 'sparse_categorical_accuracy', 'sparse_categorical_crossentropy', 'sparse_top_k_categorical_accuracy', 'squared_hinge', 'top_k_categorical_accuracy'
  • loss_weights, farklı model çıktılarının kayıp katkılarını belirtmek için kullanılır.
  • weighted_metrics, test veya train verilerinde ağırlandırma yapılacak metrikleri temsil eder.

Örnek-1: Bazı kişilerin diyabet hastalığına yakalanıp yakalanmama bilgilerini içeren "pima-indians-diabetes.csv" veri seti ile kişinin diyabet hastası olup olamayacağını gösterecek olan bir model oluşturarak onu derleyelim.

#İlgili kütüphaneler yüklenir
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
import warnings
warnings.filterwarnings("ignore")
from sklearn.model_selection import train_test_split

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense 
#Veri seti okundu
df=pd.read_csv("pima-indians-diabetes.csv",header=None)

#Veri setinde sütun isimleri belirli olmadığından dolayı sütun isimleri ataması yapılır.
df.columns=["preg","plass","press","skin","test","mass","pedi","age","class"]
#İlk 5 satır
df.head()

Çıktı:

#x ve y(hedef-tahmin) değerleri belirtilir.
x,y=df.drop("class",axis=1),df[["class"]]

#train ve test verileri ayrılır
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=42,test_size=.2)

#Train veri setindeki değişken sayısı
n_cols=x.shape[1]

Veri seti değişken sayısı da göz önüne alınarak bir model oluşturuldu. Model bir giriş katmanı, 3 gizli katman ve 1 tane de çıkış katmanından oluşmaktadır. Gizli katman sayısı duruma göre artırılıp azaltılabilir.

#Model oluşturulur.
model=Sequential()

#Giriş Katmanı ve 1.Gizli Katman oluşturulur.
model.add(Dense(units=12,activation="relu",input_shape=(n_cols,)))

#2.Gizli Katman oluşturulur.
model.add(Dense(units=8,activation="relu"))

#3.Gizli Katman oluşturulur.
model.add(Dense(units=4,activation="relu"))

#Çıkış Katmanı
model.add(Dense(units=1,activation="sigmoid"))
#Model özeti
model.summary()

Çıktı:

Model: "sequential"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 dense (Dense)               (None, 12)                108       
                                                                 
 dense_1 (Dense)             (None, 8)                 104       
                                                                 
 dense_2 (Dense)             (None, 4)                 36        
                                                                 
 dense_3 (Dense)             (None, 1)                 5         
                                                                 
=================================================================
Total params: 253
Trainable params: 253
Non-trainable params: 0

Diyabet hastalık durumunu tahmin etme işlemi yapılacağı için bu bir Sınıflandırma (Classification) işlemidir. Bu yüzden model derleme işlemi yapılırken bu durum göz önüne getirilerek işlem yapılmalıdır.

model.compile(loss='binary_crossentropy',optimizer="adam",metrics=["accuracy"])

Yukarıda bulunan model.compile işlemi özetle;

  • "loss" sınıflandırma işleminde kullanılan "binary_crossentropy" seçildi.
  • "optimizer" olarak "adam" seçidi.(Bu seçim sınıflandırma veya regresyon işleminden bağımsızdır.)
  • "metrics" olarak sınıflandırma algoritmalarını ölçmek için kullanılan değerlendirme yöntemlerinden "accuracy" seçildi. Başka bir yöntem veya yöntemler de seçilebilirdi.

Şuana kadar veri seti özellikleri göz önünde bulunarak bir model oluşturuldu ve model derleme işlemi yapıldı. Bundan sonraki aşamada veri setindeki "x_train" ve "y_train" değerleri derleme işlemi yapılan modele verilerek derin öğrenme işleminde "Fit Method" (Öğrenme Yöntemi) adımına geçilecektir.

Paylaş:

Yorum Yap (*Yorumunuza kod eklemek isterseniz Kod Parçacığı Ekle butonuna tıklayarak ekleyebilirsiniz.)

Yorumlar

Henüz hiç yorum yapılmamış, ilk yorum yapan sen ol.