【问题标题】:When using pretrained model(vgg, resnet like) as backbone, should we use it in `eval mode` or in `train mode`?当使用预训练模型(vgg, resnet like)作为主干时,我们应该在“评估模式”还是“训练模式”中使用它?
【发布时间】:2021-11-22 19:52:53
【问题描述】:

当我们使用预训练模型时,例如vgg16,作为整个模型的主干,起到特征提取器的作用,模型的数据流可以描述如下:

数据 --> vgg16 --> 另一个网络 --> 输出

目前,我已经为 vgg16 中的所有参数设置了 False require_grads 标志,并将这些参数从优化器的参数列表中排除,因此在训练期间不会修改 vgg16。

但是当我进一步研究时,我现在想知道应该在哪种模式下使用 vgg16?我们应该在运行训练 epoch 之前调用 vgg16.eval() 吗?

【问题讨论】:

    标签: python pytorch vgg-net pre-trained-model


    【解决方案1】:

    但是,在一般情况下,如果您正在冻结模型(使用requires_grad = False),那么您将不再更新运行统计信息,因此应该使用运行统计信息,即将模型置于评估模式。

    VGG 的主干没有任何归一化层,也没有丢失。所以最终将主干置于 evaltraining 模式并不重要。

    【讨论】:

      猜你喜欢
      • 2017-08-19
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      • 2020-05-06
      相关资源
      最近更新 更多