Стек CNN с ГРУ для изображения - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь сложить CNN 2D с GRU. У меня есть успех, чтобы получить способ сложить CNN, но у меня есть ошибка GRU.

Вот мой код:

model = Sequential()


#model.add(Dropout(0.25))


model.add(Conv2D(filters = 64, kernel_size = (5,5),padding = 'Same', 
                 activation ='relu', input_shape = (35,152,1)))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Conv2D(filters = 64, kernel_size = (5,5),padding = 'Same', 
                 activation ='relu'))


model.add(GRU(50,return_sequences=True))
model.add(layers.Dense(nb_labels))

model.summary()

model.compile(optimizer=RMSprop(), loss='mae')

history = model.fit(x_train_pad, y_train_pad,
          batch_size=batch_size,
          epochs=100,
          shuffle=True,
          verbose=2,
          validation_data=(x_test_pad, y_test_pad), callbacks=[TQDMNotebookCallback(leave_inner=True, leave_outer=True)]) #callbacks=[TQDMNotebookCallback()]

Вот моя ошибка:

Anaconda3\lib\site-packages\keras\engine\base_layer.py in assert_input_compatibility(self, inputs)
    309                                      self.name + ': expected ndim=' +
    310                                      str(spec.ndim) + ', found ndim=' +
--> 311                                      str(K.ndim(x)))
    312             if spec.max_ndim is not None:
    313                 ndim = K.ndim(x)

ValueError: Input 0 is incompatible with layer gru_16: expected ndim=3, found ndim=4

Заранее благодарим за помощь

1 Ответ

0 голосов
/ 14 июня 2019

Как объясняет ValueError, слой GRU ожидает 3-мерного входа, но выход вашего последнего Conv2D имеет размерность 4 (В вашем случае размерность: (Нет, 17, 76, 64)). В зависимости от того, что вам нужно сделать, вам нужно уменьшить размерную форму перед подачей слоя GRU. Например, вы можете использовать методы объединения.

...