我们已经知道可以从以下代码获得每一层的输出:
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个时期中的每个时期获取模型中最后一层的输出?
最佳答案
您可以创建自定义回调(see Documentation),并将其传递给fit
方法中的回调列表。
例:
from keras.callbacks import Callback
class 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 callbacks。
关于python - 从LSTM Keras的每个时代的最后一层获取输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52791686/