我在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))
提前致谢。
答案 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文件中,......
希望这有帮助