torch当中所有的层
在 PyTorch 里,层(layer)其实就是各种 torch.nn.Module 的子类。种类非常多,可以分为几大类:
1.卷积层
1.1. 1D/2D/3D卷积
nn.Conv1d, nn.Conv2d, nn.Conv3d
1.2.转置卷积(反卷积/上采样卷积)
nn.ConvTranspose1d, nn.ConvTranspose2d, nn.ConvTranspose3d
1.3.稀疏卷积/量化卷积
(部分在拓展库里)
2.池化层
2.1.最大池化
nn.MaxPool1d, nn.MaxPool2d, nn.MaxPool3d
2.2.平均池化
nn.AvgPool1d, nn.AvgPool2d, nn.AvgPool3d
2.3.自适应池化
nn.AdaptiveMaxPool1d, nn.AdaptiveMaxPool2d, nn.AdaptiveMaxPool3d,nn.AdaptiveAvgPool1d/2d/3d
2.4.全局池化
(通过 Adaptive*Pool 实现输出大小为 1)
3.归一化层
3.1.批量归一化
nn.BatchNorm1d, nn.BatchNorm2d, nn.BatchNorm3d
3.2.层归一化
nn.LayerNorm
3.3.实例归一化
nn.InstanceNorm1d, nn.InstanceNorm2d, nn.InstanceNorm3d
3.4.组归一化
nn.GroupNorm
3.5.权重归一化
nn.utils.weight_norm (工具函数)
3.6.谱归一化
nn.utils.spectral_norm
4.激活函数层
(虽然很多在 torch.nn.functional 里用函数,但也有对应 nn.Module 版本)
nn.ReLU,nn.ReLU6nn.Sigmoid,nn.Tanh,nn.Softmax,nn.LogSoftmaxnn.LeakyReLU,nn.PReLU,nn.ELU,nn.CELU,nn.SELU,nn.GELUnn.Hardtanh,nn.Hardsigmoid,nn.Hardswish,nn.Hardshrinknn.Softplus,nn.Softsignnn.SiLU(Swish)
5.循环神经网络层
nn.RNN,nn.LSTM,nn.GRU对应的 cell:
nn.RNNCell,nn.LSTMCell,nn.GRUCell
6.Transformer/Attention层
nn.MultiheadAttentionnn.Transformer,nn.TransformerEncoder,nn.TransformerDecodernn.TransformerEncoderLayer,nn.TransformerDecoderLayer
7.线性层/全连接层
nn.Linearnn.Bilinear
8.Dropout层
nn.Dropout,nn.Dropout2d,nn.Dropout3dnn.AlphaDropoutnn.FeatureAlphaDropout
9.Upsampling/下采样
nn.Upsample(最近邻、双线性等插值)卷积转置层(见上)
10.稀疏/Embedding层
nn.Embedding,nn.EmbeddingBagnn.Parameter(严格来说是张量,但常作为层参数)
11.工具性层
nn.Flatten,nn.Unflattennn.Identity(什么都不做)nn.Sequential(层的容器)nn.ModuleList,nn.ParameterListnn.PixelShuffle,nn.PixelUnshufflenn.ConstantPad1d/2d/3d,nn.ReflectionPad2d,nn.ReplicationPad2d,nn.ZeroPad2d