Ich versuche, Dekonvolution in Keras zu implementieren. Mein Modell Definition lautet wie folgt:Wie Dekonvolution in Keras/Theano durchzuführen?
model=Sequential()
model.add(Convolution2D(32, 3, 3, border_mode='same',
input_shape=X_train.shape[1:]))
model.add(Activation('relu'))
model.add(Convolution2D(32, 3, 3, border_mode='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Convolution2D(64, 3, 3, border_mode='same'))
model.add(Activation('relu'))
model.add(Convolution2D(64, 3, 3,border_mode='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(nb_classes))
model.add(Activation('softmax'))
I Entfaltungs oder transponiert Faltung auf den Ausgang von der ersten Faltungsschicht d convolution2d_1
gegeben ausgeführt werden soll.
Lets sagen, dass die Merkmalskarte wir nach der ersten Faltungsschicht X
ist, die von (9, 32, 32, 32)
ist, wo 9 die Anzahl der Bilder der Dimension ist 32x32
ich durch die Schicht durchlaufen haben. Die Gewichtsmatrix der ersten Schicht erhält man durch get_weights()
Funktion von Keras. Die Dimension der Gewichtsmatrix ist (32, 3, 3, 2)
.
Der Code, den ich für die Durchführung umgesetzt Faltung bin mit ist
conv_out = K.deconv2d(self.x, W, (9,3,32,32), dim_ordering = "th")
deconv_func = K.function([self.x, K.learning_phase()], conv_out)
X_deconv = deconv_func([X, 0 ])
Aber immer Fehler:
CorrMM shape inconsistency:
bottom shape: 9 32 34 34
weight shape: 3 32 3 3
top shape: 9 32 32 32 (expected 9 3 32 32)
Kann jemand bitte sagen Sie mir, wo ich falsch gehe?