如何确定编码器/解码器的神经元数量?

时间:2019-08-08 05:49:35

标签: tensorflow encoding keras neural-network deep-learning

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

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

0 个答案:

没有答案