python - 从LSTM,Keras中每个时期的最后一层获取输出
问题描述
我们已经知道每一层的输出可以从下面的代码中获得:
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 中为每个 epoch 获得模型中最后一层的输出呢?
解决方案
您可以创建自定义回调(请参阅文档)并将其传递给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 回调。
推荐阅读
- laravel - 部署 Laravel 应用后出现 403 错误
- postgresql - 为什么在将本地 Postgres 还原到 AWS RDS 后 SQL 语法会发生变化?
- r - 将新值插入向量中,使第一个元素始终是新插入的元素
- angular - 用一个 Observable 填充响应式表单
- uiviewcontroller - UIViewController生命周期破iOS13,makeKeyAndVisible()好像不能操作?
- matlab - 如何为 ltiview 添加标题?
- javascript - 获取异步/等待数据并在 html 中显示/返回
- c - 如何限制在c中运行的并发线程并在每个线程完成执行后获取它的返回值(pthread)
- cypress - 如何在赛普拉斯中使用 fakerjs
- amazon-s3 - 如何将 api gateway rest api 限制为 CloudFront 托管的 S3 网站