【问题标题】:Which PyTorch modules are affected by model.eval() and model.train()?哪些 PyTorch 模块受 model.eval() 和 model.train() 影响?
【发布时间】:2021-06-06 15:01:34
【问题描述】:

model.eval() 方法修改了某些模块(层),这些模块(层)需要在训练和推理期间表现不同。 the docs中列出了一些示例:

这仅对某些模块有 [an] 效果。如果它们受到影响,请参阅特定模块的文档以了解其在训练/评估模式下的行为的详细信息,例如DropoutBatchNorm

有哪些模块受到影响的详尽列表吗?

【问题讨论】:

  • 我想……就是这样?我不记得有任何其他改变其行为的标准层,但也许我错了,如果列表存在,我会及时纠正:))我当然考虑到所有继承自 BatchNorm 的层

标签: python machine-learning pytorch batch-normalization dropout


【解决方案1】:

在 google 上搜索site:https://pytorch.org/docs/stable/generated/torch.nn. "during evaluation",会出现以下模块受到影响:

Base class Modules Criteria
_InstanceNorm InstanceNorm1d
InstanceNorm2d
InstanceNorm3d
track_running_stats=True
_BatchNorm BatchNorm1d
BatchNorm2d
BatchNorm3d
SyncBatchNorm
_DropoutNd Dropout
Dropout2d
Dropout3d
AlphaDropout
FeatureAlphaDropout

【讨论】:

    【解决方案2】:

    除了@iacob提供的信息:

    Base class Module Criteria
    RNNBase RNN
    LSTM
    GRU
    dropout > 0 (default: 0)
    Transformer layers Transformer
    TransformerEncoder
    TransformerDecoder
    dropout > 0 (Transformer default: 0.1)
    Lazy variants LazyBatchNorm
    currently nightly
    merged PR
    track_running_stats=True

    【讨论】:

    • GroupNorm 和 LayerNorm 不跟踪运行状态,不受 model.eval() 影响。
    猜你喜欢
    • 2021-06-30
    • 2021-07-14
    • 2019-08-14
    • 2019-12-31
    • 2023-03-31
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多