Hiperparametre ayarı

Keras ile Deep Learning'e Giriş

Miguel Esteban

Data Scientist & Founder

Yapay sinir ağı hiperparametreleri

  • Katman sayısı
  • Katman başına nöron sayısı
  • Katman sırası
  • Katman aktivasyonları
  • Batch boyutları
  • Öğrenme hızları
  • Optimize ediciler
  • ...
Keras ile Deep Learning'e Giriş

Sklearn özeti

# RandomizedSearchCV'yi içe aktarın
from sklearn.model_selection import RandomizedSearchCV

# Sınıflandırıcınızı oluşturun tree = DecisionTreeClassifier()
# İncelenecek bir dizi parametre tanımlayın params = {'max_depth':[3,None], "max_features":range(1,4), 'min_samples_leaf': range(1,4)}
# Çapraz doğrulama ile rastgele arama yapın tree_cv = RandomizedSearchCV(tree, params, cv=5)
tree_cv.fit(X,y) # En iyi parametreleri yazdırın print(tree_cv.best_params_)
{'min_samples_leaf': 1, 'max_features': 3, 'max_depth': 3}
Keras ile Deep Learning'e Giriş

Bir Keras modelini Sklearn tahminleyicisine dönüştürme

# Keras modelimizi oluşturan fonksiyon
def create_model(optimizer='adam', activation='relu'):
    model = Sequential()
    model.add(Dense(16, input_shape=(2,), activation=activation))
    model.add(Dense(1, activation='sigmoid'))
    model.compile(optimizer=optimizer, loss='binary_crossentropy')
    return model

# Keras'tan sklearn sarmalayıcısını içe aktarın from tensorflow.keras.wrappers.scikit_learn import KerasClassifier
# Bir modeli sklearn tahminleyicisi olarak oluşturun model = KerasClassifier(build_fn=create_model, epochs=6, batch_size=16)
Keras ile Deep Learning'e Giriş

Çapraz doğrulama

# cross_val_score'u içe aktarın
from sklearn.model_selection import cross_val_score

# Keras modelinizin 5 katlı çapraz doğrulamadaki performansını kontrol edin
kfold = cross_val_score(model, X, y, cv=5)


# Katman başına ortalama doğruluğu yazdırın kfold.mean()
0.913333
# Katman başına standart sapmayı yazdırın
kfold.std()
0.110754

Keras ile Deep Learning'e Giriş

YSA hiperparametre ayarı için ipuçları

  • Izgara aramasına göre rastgele aramayı tercih edin
  • Çok fazla epoch kullanmayın
  • Veri kümenizin daha küçük bir örneğini kullanın
  • Batch boyutu, aktivasyon, optimize edici ve öğrenme hızıyla oynayın
Keras ile Deep Learning'e Giriş

Keras modellerinde rastgele arama

# Bir dizi parametre tanımlayın
params = dict(optimizer=['sgd', 'adam'], epochs=3, 
              batch_size=[5, 10, 20], activation=['relu','tanh'])

# Rastgele arama CV nesnesi oluşturun ve veriye uydurun random_search = RandomizedSearchCV(model, params_dist=params, cv=3)
random_search_results = random_search.fit(X, y)
# Sonuçları yazdırın print("Best: %f using %s".format(random_search_results.best_score_, random_search_results.best_params_))
Best: 0.94 using {'optimizer': 'adam', 'epochs': 3, 'batch_size': 10, 'activation': 'relu'}
Keras ile Deep Learning'e Giriş

Diğer hiperparametreleri ayarlama

def create_model(nl=1,nn=256):
    model = Sequential()
    model.add(Dense(16, input_shape=(2,), activation='relu'))

# nl ile belirtilen kadar gizli katman ekleyin for i in range(nl): # Katmanlar nn nörona sahip model.add(Dense(nn, activation='relu')) # Modelinizi tanımlayıp derlemeyi tamamlayın...
Keras ile Deep Learning'e Giriş

Diğer hiperparametreleri ayarlama

# create_model() ile aynı adlara sahip parametreleri tanımlayın
params = dict(nl=[1, 2, 9], nn=[128,256,1000])

# Rastgele aramayı tekrarlayın...

# Sonuçları yazdırın...
Best: 0.87 using {'nl': 2,'nn': 128}
Keras ile Deep Learning'e Giriş

Biraz ağ ayarlayalım!

Keras ile Deep Learning'e Giriş

Preparing Video For Download...