[已编辑]
抱歉,只有链接答案不好。所以我试着一一回答。
我是否应该只为我的卷积和池化层或 LSTM 包含 TimeDirstibuted 函数?
仅对 Conv 和 Pooling 层使用 TimeDistributed 函数,不需要 LSTM。
有没有办法并行运行 CNN 层?
不,如果您使用 CPU。如果你使用 GPU,这是可能的。
Transparent Multi-GPU Training on TensorFlow with Keras
什么是最合适的输入维度?
五个。 (批次、时间、宽度、高度、通道)。
有没有办法将 // 中的 CNN 数量限制为例如 4 个
您可以在预处理中通过手动将帧对齐到特定数字来执行此操作,而不是在网络中。换句话说,如果你想在处理 4 帧之后有输出,“时间”维度应该是 4。
model = Sequential()
model.add(
TimeDistributed(
Conv2D(64, (3, 3), activation='relu'),
input_shape=(data.num_frames, data.width, data.height, 1)
)
)
model.add(TimeDistributed(MaxPooling2D((2, 2), strides=(1, 1))))
model.add(TimeDistributed(Conv2D(128, (4,4), activation='relu')))
model.add(TimeDistributed(MaxPooling2D((2, 2), strides=(2, 2))))
model.add(TimeDistributed(Conv2D(256, (4,4), activation='relu')))
model.add(TimeDistributed(MaxPooling2D((2, 2), strides=(2, 2))))
# extract features and dropout
model.add(TimeDistributed(Flatten()))
model.add(Dropout(0.5))
# input to LSTM
model.add(LSTM(256, return_sequences=False, dropout=0.5))
# classifier with sigmoid activation for multilabel
model.add(Dense(data.num_classes, activation='sigmoid'))
参考:
PRI-MATRIX FACTORIZATION - BENCHMARK