如何在Keras模型中的每个epoc之后检查权重

时间:2017-02-04 10:58:24

标签: neural-network deep-learning keras keras-layer

我在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 个答案:

答案 0 :(得分:6)

您正在寻找的是CallBack功能。回调是Keras函数,在关键点的训练期间重复调用。它可以是一批,一个时代或整个培训之后。有关doc和现有回调列表,请参阅here

你想要的是一个可以用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文件中,......

希望这有帮助