344. The 3rd YouTube-8M Video Understanding Challenge | youtube8m-2019
为了使用PyTorch,我参考 https://www.kaggle.com/tbmoon/how-to-save-tfrecord-into-npy-too-slow 将tfrecords转换成了numpy数组。
然后我仅在验证集上训练了一个3层的RNN模型。该模型包含两个独立的GRU,分别用于处理帧数据和音频数据,然后将它们拼接在一起并传递给一个带有softmax激活函数的全连接层。这让我在Public LB上获得了0.71的分数。我也尝试了上下文门控,但对该模型没有太大区别。
对于训练集,我只选择了只有1个标签的样本。为了加快训练速度,对于每个视频,随机选择15个连续帧进行训练。
在训练集上训练RNN模型约4小时,然后在验证集上进行微调。这个经过微调的单个3层RNN模型让我在LB上获得了0.746的分数。另外训练的一个4层RNN模型LB得分为0.735。
在单个P100 GPU上,每个模型的总训练时间不到6小时。
我的最终提交是这两个模型的平均集成,Public LB分数为0.753,Private LB分数为0.744。
我预测了测试集中每5秒的片段,并使用每个类别得分最高的前100000个结果进行提交。在单个GPU上预测耗时30分钟。
我用3层或6层的Transformer替换了RNN模型,但并没有提高分数。接着我参考这篇论文(https://arxiv.org/abs/1901.11504)在训练集和验证集上尝试了多任务学习,这也没有帮助。
我还计划用验证集进行序列到序列的学习实验,但在比赛结束前没能完成代码编写。