我正在训练一个模型,并且训练集和验证集的准确性都提高了。我使用的是预训练模型,因为我的数据集非常小。我不确定为什么在验证的微调过程中损失会增加: 而从头开始训练时,损失会减少,类似于训练:
预训练中使用的模型在训练集中没有所有的类/也没有精确的模式。这是否解释了为什么微调没有提高准确性,并且与微调相比,从头开始的训练有一点点增强?
额外的信息:
我正在使用 C3D 模型,它首先将一个视频分成几个“堆栈”,其中一个堆栈是由 16 帧组成的视频的一部分。我正在尝试从视频中学习动作。
C3D模型由5个卷积层和3个全连接层组成:https ://arxiv.org/abs/1412.0767
预训练数据集:11 个类,6646 个视频分为 94069 个堆栈训练数据集:18 个类(有 11 个与预训练“几乎相似”的类),657 个视频分为 6377 个堆栈
在微调中,我不会冻结任何层,因为与用于预训练的数据集中的视频相比,训练中的视频位于不同的位置,并且在视觉上与预训练视频不同。接下来我正在尝试用全连接层中的少量神经元来训练模型。
学习率从 lr = 0.005 开始,在第 4、8、12 步之后,在预训练和微调阶段分别降低 10、100、1000