Tensorflow Keras 在自编码器中分别使用编码器和解码器

Posted

技术标签:

【中文标题】Tensorflow Keras 在自编码器中分别使用编码器和解码器【英文标题】:Tensorflow Keras use encoder and decoder separately in autoencoder 【发布时间】:2019-01-05 02:05:30 【问题描述】:

我在 tensorflow 中使用 Keras api,试图实现自动编码器。顺序模型有效,但我希望能够分别使用编码器(前两层)和解码器(后两层),但使用我已经训练过的模型的权重。有没有办法做到这一点?我必须制作自定义模型吗?

model = keras.Sequential()
model.add(encoder_1)
model.add(leaky_relu)
model.add(encoder_2)
model.add(leaky_relu2)
model.add(decoder_1)
model.add(leaky_relu3)
model.add(decoder_2)

encoder_model = keras.Sequential()
encoder_model.add(encoder_1)
encoder_model.add(leaky_relu)
encoder_model.add(encoder_2)
encoder_model.add(leaky_relu2)

decoder_model = keras.Sequential()
decoder_model.add(decoder_1)
model.add(leaky_relu3)
decoder_model.add(decoder_2)

我这样定义我的模型,但试图在编码器或解码器输出上运行预测

'Sequential' object has no attribute '_feed_input_names'

【问题讨论】:

【参考方案1】:

是的,您应该将编码和解码层包装在单独调用的 Model 实例中。关于自动编码器的 Keras 博客端口应该包含您需要知道的所有内容:https://blog.keras.io/building-autoencoders-in-keras.html

【讨论】:

这似乎在 tensorflow 中不起作用,我用代码示例和错误编辑了我的原始帖子 您想使用函数式 api,如示例所示,而不是顺序式 api。 checkout this answer 了解如何独立定义和运行编码器和解码器

以上是关于Tensorflow Keras 在自编码器中分别使用编码器和解码器的主要内容,如果未能解决你的问题,请参考以下文章

将 Tensorflow Keras 模型(编码器 - 解码器)保存为 SavedModel 格式

如何分别保存 Keras 编码器和解码器

如何将训练有素的 Tensorflow 模型转换为 Keras?

Keras 中具有样本权重的自定义损失函数

如何在自定义损失函数中迭代张量?

keras简单介绍与使用