我们已经知道可以从以下代码中获取每层的输出:
def get_layer(model,x): from keras import backend as K get_3rd_layer_output = K.function([model.layers[0].input], [model.layers[2].output]) layer_output = get_3rd_layer_output([x])[0] print(layer_output.shape) return layer_output
LSTM模型的训练过程如下:
history = model.fit(X_train, y_train, batch_size=batch_size,verbose=1, nb_epoch=10,validation_data=(X_test,y_test))
但是,如何在10个epoch中获取模型最后一层的输出呢?
回答:
你可以创建一个自定义回调(查看文档)并将其传递到fit
方法的回调列表中。
示例:
from keras.callbacks import Callbackclass LogThirdLayerOutput(Callback): def on_epoch_end(self, epoch, logs=None): layer_output = get_3rd_layer_output(self.validation_data)[0] print(layer_output.shape)
在训练模型时:
history = model.fit(X_train, y_train, batch_size=batch_size, verbose=1, nb_epoch=10, validation_data=(X_test,y_test), callbacks=[LogThirdLayerOutput()])
如果你不想在单独的类中创建回调,你也可以使用Lambda回调。