7

Keras でデコンボリューションを実装しようとしています。私のモデル定義は次のとおりです。

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'))

最初の畳み込み層、つまりconvolution2d_1.

最初の畳み込みレイヤーの後にある特徴マップはX、 9がレイヤーを通過した(9, 32, 32, 32)次元の画像の数であるとしましょう。Keras の関数32x32によって得られる最初の層の重み行列。get_weights()重み行列の次元は です(32, 3, 3, 2)

転置畳み込みを実行するために使用しているコードは

 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 ])

しかし、エラーが発生します:

 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)

誰が私が間違っているのか教えてもらえますか?

4

2 に答える 2