我想在https://blog.keras.io/building-autoencoders-in-keras.html 之后将 autoencoder 学习和应用分为两部分,并使用 fashion-mnist 数据进行测试:
加载图像,进行可能需要数小时或数天的拟合,并使用回调来保存最佳自动编码器模型。该过程可能会在下一部分之前几周进行。
使用此最佳模型(通过文件名手动选择)并绘制原始图像、自动编码器的编码器进行的编码表示以及使用自动编码器的解码器进行的预测。我有问题(见第二步)从训练和保存的自动编码器中提取编码器和解码器层。
对于第一步,我有一个非常简单的网络,如下所示:
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]但它不起作用。
所以,我的一般问题是如何提取部分加载模型。
相关分类