2017-06-05 7 views
2

ich über diesen link einen tiefen Autoencoder zu bauen bin versucht, aber ich habe diesen Fehler:Valueerror: Eingang 0 ist unvereinbar mit Schicht dense_6 in keras

ValueError: Input 0 is incompatible with layer dense_6: expected axis -1 of input shape to have value 128 but got shape (None, 32)

Der Code:

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) #decode.shape = (?,128) 
decoded = Dense(784, activation='relu')(decoded) 

autoencoder = Model(input_img, decoded) 

encoder = Model(input_img, encoded) 
encoded_input = Input(shape=(encoding_dim,)) 
decoder_layer = autoencoder.layers[-1] 
decoder = Model(encoded_input, decoder_layer(encoded_input)) #ERROR HERE 
... 

Dies ist der Fehler, den ich bekam:

Traceback (most recent call last): 
    File "autoencoder_deep.py", line 37, in <module> 
    decoder = Model(encoded_input, decoder_layer(encoded_input)) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/keras/engine/topology.py", line 569, in __call__ 
    self.assert_input_compatibility(inputs) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/keras/engine/topology.py", line 479, 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) 

Jeder Vorschlag oder Kommentar wird sehr geschätzt. Vielen Dank.

+0

Sie können prüfen, die input_shape definiert in Ihrer keras Konfigurationsdatei. Details finden Sie in diesem Beitrag https://stackoverflow.com/questions/40135370/keras-getting-wrong-output-shape/40137162#40137162 – pyan

Antwort

0

Nach this Antwort versuchen:

# retrieve the last layer of the autoencoder model 
decoder_layer1 = autoencoder.layers[-3] 
decoder_layer2 = autoencoder.layers[-2] 
decoder_layer3 = autoencoder.layers[-1] 

# create the decoder model 
decoder = Model(input=encoded_input, 
output=decoder_layer3(decoder_layer2(decoder_layer1(encoded_input)))) 
+0

Haben Sie meine Antwort gelesen? –

Verwandte Themen