从训练有素的自动编码器中提取编码器和解码器

我想在https://blog.keras.io/building-autoencoders-in-keras.html 之后将 autoencoder 学习和应用分为两部分,并使用 fashion-mnist 数据进行测试:

  1. 加载图像,进行可能需要数小时或数天的拟合,并使用回调来保存最佳自动编码器模型。该过程可能会在下一部分之前几周进行。

  2. 使用此最佳模型(通过文件名手动选择)并绘制原始图像、自动编码器的编码器进行的编码表示以及使用自动编码器的解码器进行的预测。我有问题(见第二步)从训练和保存的自动编码器中提取编码器和解码器层。

对于第一步,我有一个非常简单的网络,如下所示:

input_img = Input(shape=(784,))

# encoded representation

encoded = Dense(encoding_dim, activation='relu')(input_img)

# lossy reconstruction

decoded = Dense(784, activation='sigmoid')(encoded)


# full AE model: map an input to its reconstruction

autoencoder = Model(input_img, decoded)


# encoder: map an input to its encoded representation

encoder = Model(input_img, encoded)

# placeholder for an encoded input

encoded_input = Input(shape=(encoding_dim,))

# last layer of the autoencoder model

decoder_layer = autoencoder.layers[-1]

# decoder

decoder = Model(encoded_input, decoder_layer(encoded_input))

这些网络是:


autoencoder.summary()

_________________________________________________________________

Layer (type)                 Output Shape              Param #   

=================================================================

input_5 (InputLayer)         (None, 784)               0         

_________________________________________________________________

dense_5 (Dense)              (None, 32)                25120     

_________________________________________________________________

dense_6 (Dense)              (None, 784)               25872     

=================================================================

因此,由于尺寸不正确,我对编码器的提取不起作用。我什至在提取解码器(形成保存自动编码器)方面的成功率较低,因为我无法使用push()并尝试过类似的东西,decoder = decoder.layers[-1:-2]但它不起作用。


所以,我的一般问题是如何提取部分加载模型。



慕婉清6462132
浏览 250回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python