其他分享
首页 > 其他分享> > torch.nn.Dropout()

torch.nn.Dropout()

作者:互联网

1. torch.nn.Dropout()

class torch.nn.Dropout(p=0.5, inplace=False)

随机将输入张量中部分元素设置为 \(0\)。对于每次前向调用,被置 \(0\) 的元素都是随机的。

参数:

示例:

import torch
from torch import nn, autograd

m = nn.Dropout(p=0.5)
input = autograd.Variable(torch.randn(4, 4))
output = m(input)
print(output)
tensor([[ 2.3192,  0.0000,  0.0000, -0.0000],
        [ 0.0000,  0.3854, -1.9737, -0.0000],
        [-2.8518, -0.7907, -1.2949, -0.0000],
        [-0.0000, -3.0302, -0.0000, -0.0000]])

2. torch.nn.Dropout2d()

class torch.nn.Dropout2d(p=0.5, inplace=False)

随机将输入张量中整个通道设置为 \(0\)。对于每次前向调用,被置 \(0\) 的通道都是随机的。

通常输入来自 \(Conv2d\) 模块。

如果特征图中相邻像素是强相关的(在前几层卷集层很常见),那么nn.Dropout不会归一化激活,而只会降低学习率。

在这种情形下,nn.Dropout2d()可以提高特征图之间的独立程度,所以应该使用它。

参数:

形状:

示例:

import torch
from torch import nn, autograd

m = nn.Dropout2d(p=0.2)
input = autograd.Variable(torch.randn(2, 3, 2, 2))
output = m(input)
print(output)
tensor([[[[-0.2310,  0.2985],
          [-1.1936, -0.7231]],

         [[-0.7498,  0.2923],
          [-0.2470, -0.7570]],

         [[ 2.0942, -0.2796],
          [ 0.7177,  3.7006]]],


        [[[-0.0000, -0.0000],
          [-0.0000,  0.0000]],

         [[ 0.1563,  0.9973],
          [ 0.8000,  1.1723]],

         [[-0.1494,  0.2946],
          [-0.4893, -0.3955]]]])


来自:Dropout layers

标签:nn,Dropout,torch,0.5,inplace,0.0000
来源: https://www.cnblogs.com/keye/p/16591856.html