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

Model Kaydetme ve Kullanma

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

Keras tarafından oluşturulan model ve model içinde bulunan ağırlıkları kaydetmek için "model_from_json" kütüphanesi kullanılabilir. JSON, verileri hiyerarşik olarak tutmak için kullanılan bir dosya biçimidir.

Kullanımı için kütüphanenin içe aktarılması gerekmektedir.

from tensorflow.keras.models import model_from_json

Ö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şturaralım, modeli derleyelim ve modele veri setini öğrenme yöntemini uygulayarak modeli kaydedilim.

#İ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.models import model_from_json
from tensorflow.keras.layers import Dense,Dropout
#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"]

#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]

#Model oluşturulur ve katmanlar eklenir.
model=Sequential()
model.add(Dense(units=12,activation="relu",input_shape=(n_cols,)))
model.add(Dropout(rate=.2))
model.add(Dense(units=64,activation="relu"))
model.add(Dropout(rate=.2))
model.add(Dense(units=32,activation="relu"))
model.add(Dropout(rate=.2))
model.add(Dense(units=16,activation="relu"))
model.add(Dropout(rate=.2))
model.add(Dense(units=8,activation="relu"))
model.add(Dense(units=1,activation="sigmoid"))

#Model derleme işlemi yapılır
model.compile(loss='binary_crossentropy',optimizer="adam",metrics=["accuracy"])

#Model Öğrenme işlemi yapılır.
model.fit(
    x=x_train,
    y=y_train,
    epochs=500,
    batch_size=10,
    verbose=0,
    validation_data=(x_test,y_test)
)

#Model başarı yüzdesi gözlemlenir.
scores=model.evaluate(x_test,y_test)
print("%s: %.2f%%" % (model.metrics_names[1],scores[1]*100))

Çıktı:

5/5 [==============================] - 0s 2ms/step - loss: 0.6312 - accuracy: 0.6623
accuracy: 66.23%

Model oluşturuldu ve eğitildi. Sonuç olarak %66.23 başarı oranına sahip bir model elde edildi. 

Oluşturulan modeli ve modelin ağırlıklarını kaydedelim.

#Model kayıt işlemi
model_json=model.to_json()
with open("model.json", "w") as json_file:
    json_file.write(model_json)

#Model ağırlıkları kayıt işlemi
model.save_weights("model.h5")

print("Model ve ağırlıkları dosya konumuna kaydedildi.")

Çıktı:

Model ve ağırlıkları dosya konumuna kaydedildi.

Kaydedilmiş model dosya konumundan okunur.

#Modeli yükle
json_file = open('model.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
loaded_model = model_from_json(loaded_model_json)

# Model ağırlıklarını yükle
loaded_model.load_weights("model.h5")

print("Model ve ağırlıkları dosya konumundan okundu.")

Çıktı:

Model ve ağırlıkları dosya konumundan okundu.

Model "loaded_model" adı altında dosyadan okundu. Okunan modeli test etmek için modelin tahmin etmesi için değerler verelim.

#Tahmin edilmek istenilen değer
x_value=[[2.0, 12.0, 64.0, 0.0, 0.0, 23.3, 0.672, 12.0]]

#Tahmin işlemi
pred=loaded_model.predict(x_value,verbose=1)
pred

Çıktı:

1/1 [==============================] - 0s 77ms/step
array([[0.01501521]], dtype=float32)
["Diayabet hastası" if pred>0.5 else "Diyabet hastası değil"]

Çıktı:

['Diyabet hastası değil']

Görüldüğü gibi model oluşturuldu, eğitildi, JSON olarak kaydedildi, dosya konumundan okuma işlemi yapıldı ve başarılı bir şekilde tahminleme işlemi yapılmış oldu.

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.