Я хочу использовать модель C3D, а затем lstm для обучения UCF101 для классификации видео с использованием керас.Я изменил видео, чтобы быть [Нет, 16, 112, 112,3].Я использовал функцию распределенного по времени кераса в C3D, но все же я до сих пор не понял, что должно быть формой ввода для этой модели, формой вывода и числом временных шагов.Может ли кто-нибудь помочь мне в этом вопросе.спасибо
model = Sequential()
model.add(TimeDistributed(Conv3D(64, 3, activation='relu', padding='same', name='conv1', input_shape=shape)))
model.add(TimeDistributed(MaxPooling3D(pool_size=(1,2,2), strides=(1,2,2), padding='same', name='pool1')))
model.add(TimeDistributed(Conv3D(128, 3, activation='relu', padding='same', name='conv2')))
model.add(TimeDistributed(MaxPooling3D(pool_size=(2,2,2), strides=(2,2,2), padding='valid', name='pool2')))
model.add(TimeDistributed(Conv3D(256, 3, activation='relu', padding='same', name='conv3a')))
model.add(TimeDistributed(Conv3D(256, 3, activation='relu', padding='same', name='conv3b')))
model.add(TimeDistributed(MaxPooling3D(pool_size=(2,2,2), strides=(2,2,2), padding='valid', name='pool3')))
model.add(TimeDistributed(Conv3D(512, 3, activation='relu', padding='same', name='conv4a')))
model.add(TimeDistributed(Conv3D(512, 3, activation='relu', padding='same', name='conv4b')))
model.add(TimeDistributed(MaxPooling3D(pool_size=(2,2,2), strides=(2,2,2), padding='valid', name='pool4')))
model.add(TimeDistributed(Conv3D(512, 3, activation='relu', padding='same', name='conv5a')))
model.add(TimeDistributed(Conv3D(512, 3, activation='relu', padding='same', name='conv5b')))
model.add(TimeDistributed(ZeroPadding3D(padding=(0,1,1))))
model.add(TimeDistributed(MaxPooling3D(pool_size=(2,2,2), strides=(2,2,2), padding='valid', name='pool5')))
model.add(TimeDistributed(Flatten()))
model.add(TimeDistributed(Dense(4096, activation='relu', name='fc6')))
model.add(TimeDistributed(Dropout(0.5)))
model.add(TimeDistributed(Dense(4096, activation='relu', name='fc7')))
model.add(TimeDistributed(Dropout(0.5)))
model.add(TimeDistributed(Dense(487, activation='softmax', name='fc8')))
model.add(Dropout(0.5))
model.add(LSTM(256, return_sequences=True, dropout = 0.5, input_shape = (time_step_nbr, 487)))
model.add(TimeDistributed(Dense(101, activation='softmax')))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['acc'])