在训练中使用 dropout 后乘以权重 - PyTorch

数据挖掘 机器学习 深度学习 火炬 辍学
2022-03-14 20:07:17

我有一个 Pytorch 回归模型如下:

    model = nn.Sequential(nn.Linear(n_in, n_h_1),
                      nn.ReLU(),
                      nn.Dropout(p=0.1),
                      nn.Linear(n_h_1, n_h_2),
                      nn.ReLU(),
                      nn.Linear(n_h_2, n_out))

如您所见,我使用了一个 Dropout 正则化层,其 dropout 概率为 0.1。训练完成后,我们应该禁用 dropout。这可以使用model.eval(). 参考 这个 StackOverflow 答案(1-p)和其他资源,我们应该在模型推理期间将隐藏层的输出乘以 。

我的问题是:我们是否必须使用 pytorch 手动执行此操作,或者库在应用后自行处理model.eval()如果我们必须自己做,对于给定的模型,我们如何才能做到这一点?

1个回答

PyTorch 通过在训练时以以下概率缩放 dropout 层的输出来处理此问题:

在此处输入图像描述

所以它在应用后自己处理这个问题model.eval()你可以在这里查找他们的代码