2017-02-04 37 views
5

Keras'taki sıralı modeli kullanıyorum. Her dönemden sonra modelin ağırlığını kontrol etmek istiyorum. Nasıl yapılacağı konusunda bana rehberlik edebilir misiniz?Keras modelindeki her epoc'dan sonraki ağırlıklar nasıl kontrol edilir

model = Sequential() 
model.add(Embedding(max_features, 128, dropout=0.2)) 
model.add(LSTM(128, dropout_W=0.2, dropout_U=0.2)) 
model.add(Dense(1)) 
model.add(Activation('sigmoid')) 
model.compile(loss='binary_crossentropy',optimizer='adam',metrics['accuracy']) 
model.fit(X_train, y_train, batch_size=batch_size, nb_epoch=5 validation_data=(X_test, y_test)) 

Şimdiden teşekkürler.

cevap

1

Aradığınız ürün CallBack işlevidir. Geri arama, eğitim sırasında anahtar noktalarda tekrar eden bir Keras fonksiyonudur. Bir partiden, bir dönemden veya tüm eğitimden sonra olabilir. Doküman ve var olan geri aramaların listesi için bkz. here.

İstediğiniz, bir LambdaCallBack nesnesiyle oluşturulabilen özel bir Geri Çağırmadır.

from keras.callbacks import LambdaCallback 

model = Sequential() 
model.add(Embedding(max_features, 128, dropout=0.2)) 
model.add(LSTM(128, dropout_W=0.2, dropout_U=0.2)) 
model.add(Dense(1)) 
model.add(Activation('sigmoid')) 

print_weights = LambdaCallback(on_epoch_end=lambda batch, logs: print(model.layers[0].get_weights())) 

model.compile(loss='binary_crossentropy',optimizer='adam',metrics['accuracy']) 
model.fit(X_train, 
      y_train, 
      batch_size=batch_size, 
      nb_epoch=5 validation_data=(X_test, y_test), 
      callbacks = [print_weights]) 

Yukarıdaki kod her dönemin sonunda gömme ağırlıkları model.layers[0].get_weights() yazdırmalısınız. Eğer, bir turşu dosyasına dökümü, okunabilir olmasını istediğiniz yere Up sen bu

+0

Cevabınız için teşekkür ederiz yardımcı olur, ancak ...

Umut yazdırmak için tüm ağırlıkları kaydetmek istiyorsanız Bunu yazdırmak yerine listelemek için bunu nasıl yapabilirim? Günlükleri denedim ["ağırlıklar"]. Eklemek (model.layers [0] .get_weights()) ama işe yaramaz – jimmy15923