我正在使用Keras对视频片段进行分类。我的网络体系结构是CNN,后跟RNN,就像本文中介绍的那样:
长期递归卷积网络
我正在使用TimeDistributed Layer Wrapper作为CNN部分。由于我的视频片段的序列长度不同,因此我input_shape是(None, rows, cols, channels)。时间步长当然没有。这是我的模型:
seq_input = Input(shape=(None, 213, 213, 3 )
frame_sequence = TimeDistributed(cnn_model)(seq_input)
time_sequence = SimpleRNN(512, return_sequences=False)(frame_sequence)
predictions = Dense(nb_10, activation='softmax')(time_sequence)
Run Code Online (Sandbox Code Playgroud)
为了进行训练,我使用fit_generator和一个生成器,该生成器生成一批要训练的32个序列。我的问题是如何将数据序列连接到一个批次中,例如:
sequence_1具有(5, 213, 213, 3)5个时间步长
sequence_2的形状具有(10, 213, 213, 3)10个时间步长的形状
如果例如我的批量大小为2,则生成器应生成具有形状(2, None, 213, 213, 3)。
我如何在Keras中实现这一点?谢谢