Dropout layers
class torch.nn.Dropout(p=0.5, inplace=False)
随机将输入张量中部分元素设置为0。对于每次前向调用,被置0的元素都是随机的。
参数:
- p - 将元素置0的概率。默认值:0.5
- in-place - 若设置为True,会在原地执行操作。默认值:False
形状:
- 输入: 任意。输入可以为任意形状。
- 输出: 相同。输出和输入形状相同。
例子:
>>> m = nn.Dropout(p=0.2)>>> input = autograd.Variable(torch.randn(20, 16))>>> output = m(input)
class torch.nn.Dropout2d(p=0.5, inplace=False)
随机将输入张量中整个通道设置为0。对于每次前向调用,被置0的通道都是随机的。
通常输入来自Conv2d模块。
像在论文Efficient Object Localization Using Convolutional Networks,如果特征图中相邻像素是强相关的(在前几层卷积层很常见),那么iid dropout不会归一化激活,而只会降低学习率。
在这种情形,nn.Dropout2d()可以提高特征图之间的独立程度,所以应该使用它。
参数:
- p(float, optional) - 将元素置0的概率。
- in-place(bool, optional) - 若设置为True,会在原地执行操作。
形状:
- 输入: ((N, C, H, W))
- 输出: ((N, C, H, W))(与输入形状相同)
例子:
>>> m = nn.Dropout2d(p=0.2)>>> input = autograd.Variable(torch.randn(20, 16, 32, 32))>>> output = m(input)
class torch.nn.Dropout3d(p=0.5, inplace=False)
随机将输入张量中整个通道设置为0。对于每次前向调用,被置0的通道都是随机的。
通常输入来自Conv3d模块。
像在论文Efficient Object Localization Using Convolutional Networks,如果特征图中相邻像素是强相关的(在前几层卷积层很常见),那么iid dropout不会归一化激活,而只会降低学习率。
在这种情形,nn.Dropout3d()可以提高特征图之间的独立程度,所以应该使用它。
参数:
- p(float, optional) - 将元素置0的概率。
- in-place(bool, optional) - 若设置为True,会在原地执行操作。
形状:
- 输入: (N, C, D, H, W))
- 输出: ((N, C, D, H, W))(与输入形状相同)
例子:
>>> m = nn.Dropout3d(p=0.2)>>> input = autograd.Variable(torch.randn(20, 16, 4, 32, 32))>>> output = m(input)