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)