首页 > 解决方案 > 如何从自动编码器中的瓶颈层 keras.tf 中的特定层获取输出?

问题描述

我正在开发一种用于聚类某些图像组的自动编码器。

input_images->...->bottleneck->...->output_images

我已将自动编码器校准至满意并保存了模型;一切都是在 python3 上使用 keras.tensorflow 开发的。

下一步是将自动编码器应用于大量图像,并根据瓶颈层中的余弦距离对它们进行聚类。糟糕,我刚刚意识到我不知道 keras.tf 中用于将模型批量运行到特定层而不是输出层的语法。因此问题:

如何运行类似于Model.predict_on_batchModel.predict_generator直到某个“瓶颈”层的东西并检索该层上的值而不是输出层上的值?

标签: tensorflowkerasautoencoder

解决方案


您需要定义一个新模型(如果您最初没有将编码器和解码器定义为单独的模型,这通常是最简单的选择)。

如果您的模型是在没有重用层的情况下定义的,那么它只是:

inputs = model.input   
outputs= model.get_layer('bottleneck').output

encoder = Model(inputs, outputs)

将该encoder模型用作任何其他模型。


推荐阅读