首页 > 解决方案 > 如何固定编码器/解码器的神经元数量?

问题描述

我正在阅读教程: 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)

我猜输入节点号与解码器层不匹配。我怎样才能解决这个问题?谢谢。

标签: tensorflowencodingkerasneural-networkdeep-learning

解决方案


推荐阅读