我正在使用Keras对视频片段进行分类。我的网络架构是CNN,后面是RNN,就像本文中提到的那样:
Long-term Recurrent Convolutional Networks
我正在为CNN部分使用TimeDistributed Layer Wrapper。由于我的视频片段的序列长度不同,因此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)
对于训练,我使用fit_generator和一个生成32批序列的生成器进行训练。我的问题是如何将数据序列连接成一个批处理,例如:
sequence_1
的形状为(5, 213, 213, 3)
,即5个时间步长
sequence_2
的形状为(10, 213, 213, 3)
,即10个时间步长
例如,如果我的批量大小为2,则生成器应生成形状为(2, None, 213, 213, 3)
的批处理。
我如何在Keras实现这一点?感谢