Я новичок как в python, так и в нейронных сетях. Я пытаюсь построить модель с CNN + RNN для классификации жестов в видео. Каждое видео состоит из 30 кадров (партия из 30 изображений). Для уровня CNN я использую слой Conv2D на уровне CNN и GRU на уровне RNN. Изображения имеют размер 84 * 84 и являются изображениями RGB (канал = 3). Я получаю сообщение об ошибке «ValueError: вход 0 несовместим со слоем gru1: ожидаемый ndim = 3, найденный ndim = 4» при попытке добавить слой GRU. Ниже мой код:
model1 = Sequential()
model1.add(Conv2D(64, (3,3), strides=(1,1), padding='same', input_shape=(84,84,3),name='c2D1'))
model1.add(BatchNormalization())
model1.add(Activation('elu'))
model1.add(MaxPooling2D(pool_size=(2,1), strides=(2,1)))
model1.add(Conv2D(128, (3,3), strides=(1,1), padding='same',name='c2D2'))
model1.add(BatchNormalization())
model1.add(Activation('elu'))
model1.add(MaxPooling2D(pool_size=(2,2), strides=(2,2)))
model1.add(Conv2D(256, (3,3), strides=(1,1), padding='same',name='c2D3'))
model1.add(BatchNormalization())
model1.add(Activation('elu'))
model1.add(MaxPooling2D(pool_size=(2,2), strides=(2,2)))
model1.add(Conv2D(256, (3,3), strides=(1,1), padding='same',name='c2D4'))
model1.add(BatchNormalization())
model1.add(Activation('elu'))
model1.add(MaxPooling2D(pool_size=(2,2), strides=(2,2)))
model1.add(GRU(units=50,input_shape=(256,84,84),return_sequences=True,name='gru1'))
model1.add(layers.Dense(nb_labels))
model1.add(Flatten())
model1.add(Dropout(0.5))
model1.add(Dense(512, activation='elu'))
model1.add(Dropout(0.5))
model1.add(Dense(5, activation='softmax'))
Пожалуйста, дайте мне знать, какое должно быть правильное значение для input_shape для слоя GRU.