Skip to content

关于训练时验证集性能不佳以及参数设定的问题 #5

@muchatang

Description

@muchatang

您好,在跑训练代码训练模型时,我遇到了一些问题,希望能得到您的帮助,非常感谢!

在训练过程中,我发现训练集的ACC比较稳定的提升,但是验证集的Acc一直在50左右波动,AUC则是波动剧烈,在57-90之间波动,
部分训练结果如下:
epoch16: * Acc:52.410 Auc:84.277 Pre:52.157 Rec:100.000 F1:68.557
epoch17:* Acc:52.259 Auc:64.254 Pre:52.259 Rec:100.000 F1:68.645
epoch18: * Acc:48.720 Auc:57.736 Pre:48.681 Rec:100.000 F1:65.484
epoch19: * Acc:49.699 Auc:79.181 Pre:49.047 Rec:100.000 F1:65.814
epoch20: * Acc:50.452 Auc:83.204 Pre:50.152 Rec:100.000 F1:66.801
考虑到硬件限制,我使用的显卡都是24G内存的。在尝试使用config.py文件中为r3d设定的原始batchsize值(40)时,我遇到了cuda内存超出的问题。
因此,我将batchsize值调整为8,同时学习率也相应地调整为原来的五分之一,即:
self.lr = 4e-5 # 原始值是2e-4
self.warmup_lr = 2e-7 # 原始值是1e-6
在训练时,我使用了总共4块显卡,并且其他参数均保持默认设置。预训练模型是从https://download.pytorch.org/models/mc3_18-a90a0ba3.pth下载的,而训练与验证数据集都是完整的faceforensics++训练与验证集。

想请问一下可能导致上述训练时验证集ACC上不去,AUC剧烈波动的原因,非常感谢!

此外,我注意到原始代码中的参数与Masked Relation Learning for DeepFake Detection文章中所提及的参数存在差异。
原始代码中,初始学习速率为2e-4,batchsize为40,epoch为100,采用warm up以及cosine策略。
文章中提到的初始学习速率为1e-4,batchsize为30,epoch为30,每5个epoch学习率变为原来的2分之一。
因此,我还有一个问题:如果我想在faceforensics++数据集上复现文章中的结果,我是否应该将这些参数调整为与文章一致?
同时,文章中的batchsize值是指单GPU的batchsize还是多个GPU的batchsize总和?如果是单GPU的batchsize为30,那么单GPU的内存需求似乎会非常高,接近50G。

期待您的回复,非常感谢!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions