pytorch中self.xxx = nn.Linear和drop_out layer的作用

  • Post author:
  • Post category:其他


class torch.nn.Linear(in_features, out_features, bias=True)

作用:对输入数据做线性变换:y=Ax+b


参数:

in_features – 每个输入样本的大小

out_features – 每个输出样本的大小

bias – 若设置为False,这层不会学习偏置。默认值:True


形状:


输入: (N,in_features)

输出: (N,out_features)


变量:


weight -形状为(out_features x in_features)的模块中可学习的权值

bias -形状为(out_features)的模块中可学习的偏置

例子:

>>> m = nn.Linear(20, 30)
>>> input = autograd.Variable(torch.randn(128, 20))
>>> output = m(input)
>>> print(output.size())

**




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)



版权声明:本文为zghnwsc原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。