我在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))
提前致谢。
最佳答案
您正在寻找的是CallBack
函数。回调是Keras函数,在训练过程中关键点反复调用。可以在一批,一个时期或整个训练之后。有关文档以及现有回调的列表,请参见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文件中,...希望这可以帮助
关于neural-network - 在Keras模型中的每个epoc之后如何检查重量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42039548/