web-dev-qa-db-ja.com

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

前もって感謝します。

13
Kiran Baktha

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

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

_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()を出力する必要があります。読みやすくしたい場所に印刷したり、pickleファイルにダンプしたりするのはあなた次第です...

お役に立てれば

8
Nassim Ben