nn.PixleShuffle(upscale_factor)

可以实现输入的reshape:
nn库 - 图1
也就是说,将多通道的信息进行融合,实现H,W的扩大。

nn.Linear(in_features, out_features)

实现线性变换操作:
对应公式:nn库 - 图2
torch.nn.``Linear(in_features, out_features, bias=True)

  • 其产生的可训练参数shape为:(out_features, in_features);
  • 其参数默认初始化为:nn库 - 图3
  • 故:线性变换操作对应的输入为2维或者3维;

image.png

样例:

  1. >>> m = nn.Linear(20, 30)
  2. >>> input = torch.randn(128, 20)
  3. >>> output = m(input)
  4. >>> print(output.size())
  5. torch.Size([128, 30])
  6. # example 2.0
  7. >>> m = nn.Linear(20, 30)
  8. >>> input = torch.randn(128, 30, 20)
  9. >>> output = m(input)
  10. >>> print(output.size())
  11. torch.Size([128, 30, 30])

nn.LayerNorm

参数:normalized_shape, eps=1e-05, elementwise_affine=True, device=None, dtype=None
其中 normalized_shape 就是进行归一化的维度(从后往前的顺序,比如输入为 N,C,H,W,你输入整数就必须是 W 最后一个维度,输入两个维度就必须是 [H, W] ),也是可学习参数(weightbias)的 shape

nn.BatchNorm

参数:num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True, device=None, dtype=None
其中 num_features 就是可学习参数(weight bias)的 shape 与特征数量对应;也就是说 BN 是对每一个特征进行归一化的。