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


神经网络训练期间,将输入张量中的一些随机元素置零已被证明是一种有效的正则化技术。为实现此任务,我们可以应用 torch.nn.Dropout()。它将输入张量中的某些元素置零。

元素将以给定的概率 p 置零。它使用伯努利分布来对置零的元素进行采样。不支持复数值输入。

语法

torch.nn.Dropout(p=0.5)

元素置零的默认概率设置为 0.5

步骤

我们可以使用以下步骤以给定的概率 p − 随机将输入张量中的一些元素置零

  • 导入所需的库。在以下所有示例中,所需的 Python 库均为 torch。确保已安装它。

import torch
  • 定义输入张量 input

input = torch.randn(5,2)
  • 定义 Dropout 层 dropout,将其概率 p 作为一个可选参数传递。

dropout = torch.nn.Dropout(p= 0.5)
  • 对输入张量 input 应用上述定义的 dropout 层 dropout。

output = dropout(input)
  • 打印包含 softmax 值的张量。

print(output)

示例 1

在以下 Python 程序中,我们使用 p = 0.5。它定义了元素置零的概率为 50%。

# Import the required library
import torch

# define a tensor
tensor = torch.randn(4)

# print the tensor
print("Input tensor:",tensor)

# define a dropout layer to randomly zero some elements
# with probability p=0.5
dropout = torch.nn.Dropout(.5)

# apply above defined dropout layer
output = dropout(tensor)

# print the output after dropout
print("Output Tensor:",output)

输出

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

示例 2

在以下 python3 程序中,我们使用 p = 0.25。这意味着输入张量中的元素有 25% 的机会被置零。

# Import the required library
import torch

# define a tensor
tensor = torch.randn(4, 3)

# print the tensor
print("Input tensor:
",tensor) # define a dropout layer to randomly zero some elements # with probability p=0.25 dropout = torch.nn.Dropout(.25) # apply above defined dropout layer output = dropout(tensor) # print the output after dropout print("Output Tensor:
",output)

输出

Input tensor:
   tensor([[-0.6748, -1.1602, 0.2891],
      [-0.7531, -1.3444, 0.2013],
      [-1.3212, 1.2103, -0.6457],
      [ 0.9957, -0.2670, 1.6593]])
Output Tensor:
   tensor([[-0.0000, -0.0000, 0.0000],
      [-1.0041, -0.0000, 0.2683],
      [-1.7616, 0.0000, -0.0000],
      [ 1.3276, -0.3560, 2.2124]])

更新于:2022 年 1 月 25 日

910 次浏览

开启你的 职业生涯

完成课程并获得认证

开始
广告