2017-02-04 6 views
5

私はKerasでシーケンシャルモデルを使用しています。私は、各エポック後にモデルの重量をチェックしたいと思います。それをどうやって行うのか教えてください。Kerasモデルのすべてのエポック後にウェイトをチェックする方法

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)) 

ありがとうございます。

答えて

1

あなたが探しているものはCallBackです。コールバックは、キーポイントでのトレーニング中に繰り返し呼び出されるKeras関数です。バッチ、エポック、またはトレーニング全体の後にすることができます。 docについてはhere、既存のコールバックのリストを参照してください。

必要なものは、LambdaCallBackオブジェクトを使用して作成できるカスタムコールバックです。

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

上記のコードは、すべてのエポックの終わりに、あなた埋め込む重みmodel.layers[0].get_weights()を印刷する必要があります。これは

+0

を助け

希望...、あなたはそれが読めるようにしたい場所をピクルスファイルにそれをダンプするために、それを印刷するのはあなた次第あなたの答えをありがとう、私はすべての重みを保存する場合それを印刷するのではなく、リストに入れるにはどうしたらいいですか?私はログ["weights"]を試しました。append(model.layers [0] .get_weights() – jimmy15923

関連する問題