我正在阅读本教程: https://blog.keras.io/building-autoencoders-in-keras.html
特别是在Deep autoencoder
部分中,该代码不起作用。
encoding_dim = 32
input_img = Input(shape=(784,))
encoded = Dense(128, activation='relu')(input_img)
encoded = Dense(64, activation='relu')(encoded)
encoded = Dense(32, activation='relu')(encoded)
decoded = Dense(64, activation='relu')(encoded)
decoded = Dense(128, activation='relu')(decoded)
decoded = Dense(784, activation='sigmoid')(decoded)
autoencoder = Model(input_img, decoded)
print('autoencoder layers:', autoencoder.layers)
encoder = Model(input_img, encoded)
encoded_input = Input(shape = (encoding_dim,))
print('encoded_input', encoded_input)
decoder_layer = autoencoder.layers[-1]
print('decoder_layer:', autoencoder.layers[-1])
print('decoded:', decoder_layer(encoded_input))
decoder = Model(encoded_input, decoder_layer(encoded_input))
autoencoder.compile(optimizer = 'adadelta', loss = 'binary_crossentropy')
按原样运行代码时,我会遇到错误。
File "simple_sparsity_deep_autoencoder.py", line 68, in <module>
print('decoded:', decoder_layer(encoded_input))
File "C:\Users\sonogi-y\AppData\Local\Continuum\anaconda3\envs\textbook\lib\site-packages\keras\engine\base_layer.py", line 440, in __call__
self.assert_input_compatibility(inputs)
File "C:\Users\sonogi-y\AppData\Local\Continuum\anaconda3\envs\textbook\lib\site-packages\keras\engine\base_layer.py", line 352, in assert_input_compatibility
' but got shape ' + str(x_shape))
ValueError: Input 0 is incompatible with layer dense_6: expected axis -1 of input shape to have value 128 but got shape (None, 32)
我猜输入的节点号与解码器层不匹配。 我怎样才能解决这个问题? 谢谢。