首页 > 解决方案 > 在训练期间更改 Dropout 值

问题描述

如何在训练期间更改 Dropout?例如

Dropout= [0.1, 0.2, 0.3]

我尝试将它作为列表传递,但我无法使其工作。

标签: pytorchtorchvision

解决方案


要在训练期间更改 dropout 概率,您应该使用functional版本,即torch.nn.functional.dropout.

dropout 的功能版本的输入参数是

  • 输入张量
  • 辍学概率(您可以更改)
  • 一个布尔值,表示它是否处于训练模式(您可以使用self.training
  • 和一个标志,指示您是否希望在适当的位置执行操作。

因此,您可以根据需要更改forward方法中丢失的概率。

例如,您可以在您的forward方法中执行以下操作:


def forward(self, x):

    ...

    # apply some layers to the input
    h = self.my_layers(x)

    # set the value of p
    p = self.get_value_for_p()

    # apply dropout with new p
    h = torch.nn.functional.dropout(h, p, self.training)

    ...

More on the functional version of dropout, here: https://pytorch.org/docs/stable/nn.functional.html#dropout-functions


推荐阅读