我在使用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'
回答:
是的,你应该将编码和解码层分别包装在单独的Model
实例中,并分别调用它们。Keras博客关于自编码器的文章应该包含你需要知道的一切:https://blog.keras.io/building-autoencoders-in-keras.html