我正在尝试使用GRU堆叠CNN 2D。 我成功地获得了一种堆叠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
预先感谢您的帮助
答案 0 :(得分:0)
正如ValueError解释的那样,GRU层正在等待3维输入,但是最后一个Conv2D的输出为4维(在您的情况下,维为:(None,17,76,64))。根据需要执行的操作,需要在送入GRU层之前减小尺寸形状。例如,您可以使用池化技术。