Python PyTorch 中的 torch.nn.Dropout() 方法

2025 年 5 月 27 日 | 4 分钟阅读

在训练过程中,torch.nn.Dropout() 会以给定概率将输入的某些部分设为零。通过正则化采用此技术可以防止过拟合。但是,需要注意的是,此方法仅适用于非复数值输入。

语法

它具有以下语法:

参数

  • p(浮点型,可选):将元素置零的概率。默认值为 0.5。
  • inplace(布尔型,可选):如果设置为 TRUE,则操作在原地完成。默认值为 False。

示例 1

在此示例中,我们使用 torch.nn.Dropout(),输入概率为 0.35,这意味着输入张量中的每个元素将有 35% 的概率被置零。

代码

输出

Original tensor: tensor([-0.7345,  0.4347, -0.1237,  1.3379,  0.2343]) 
Output tensor: tensor([-1.1308,  0.0000, -0.1903,  2.0583,  0.3605])

示例 2

在这种情况下,我们使用 torch.nn.Dropout() 方法,概率为 (0.85),且 inplace = True。输入张量的每个元素有 85% 的概率被置零,并且是原地操作。

代码

输出

Original tensor:
 tensor([[-0.1345, -0.7437,  1.2377],
        [ 0.9337,  1.6473,  0.4346],
        [-0.6345,  0.9344, -0.2456]])

Output tensor after applying dropout:
 tensor([[ 0.0000,  0.0000,  0.0000],
        [ 0.0000, 10.9820,  0.0000],
        [ 0.0000,  0.0000, -1.6372]]) 

示例 3

在下一个 Python 程序中,我们将 p = 0.5;因此,每个元素将有 50% 的概率被置零。

代码

输出

Input tensor: tensor([ 0.3667, -0.9647, 0.8537, 1.3171]) 
Output Tensor: tensor([ 0.7334, -1.9294, 0.0000, 0.0000])

示例 4

在下面的 Python 程序中,我们定义 p = 0.25;也就是说,输入张量中的任何元素有 25% 的概率被置零。

代码

输出

Input tensor: tensor([[-0.0999,  0.3457,  0.4531],
                      [ 1.2090, -0.7589,  1.0932],
                      [-0.1260,  0.7774,  1.0710],
                      [ 1.4131, -1.7814, -0.5732]])

Output Tensor: tensor([[-0.1331,  0.4609,  0.6042],
                       [ 1.6120, -1.0119,  1.4576],
                       [-0.0000,  1.0365,  1.4280],
                       [ 1.8841, -0.0000, -0.7642]])

示例 5

输出

Accuracy: 0.79
Accuracy: 0.83
Accuracy: 0.76
Accuracy: 0.81
Accuracy: 0.78
Accuracy: 0.80
Accuracy: 0.75
Accuracy: 0.82
Accuracy: 0.77
Accuracy: 0.79
Baseline: 79.10% (+/- 2.72%)

下一主题主成分分析