总结一些torch.nn的常见函数。
激活函数
-
ReLU(Rectified Linear Unit)
- 作用:将输入中的负值全部置零,正值保持不变,常用于隐藏层。
- 数学公式:
-
LeakyReLU
- 作用:为了解决 ReLU 在负区间梯度为 0 的问题,LeakyReLU 在负区间给一个很小的斜率(如 0.01)。
- 数学公式:
其中 通常取 0.01。
-
Sigmoid
- 作用:将输入映射到 (0, 1) 区间,常用于二分类的输出层。
- 数学公式:
-
Tanh(双曲正切)
- 作用:将输入映射到 (-1, 1) 区间,常用于隐藏层。
- 数学公式:
-
Softmax
- 作用:将一个向量归一化为概率分布,常用于多分类的输出层。
- 数学公式(对第
个元素): 其中 是输入向量, 是向量的长度。
填充函数
ReflectionPad2d
- 作用:对输入的四个边界使用反射填充(即边界外的值为边界内的镜像),常用于卷积前的边缘处理,减少边界效应。
- 常见参数:
padding:int 或 4 元组,指定每个边的填充大小。例如padding=1或padding=(1, 2, 3, 4)分别对应左、右、上、下的填充。
ZeroPad2d
- 作用:对输入的四个边界使用零填充,常用于卷积神经网络中保持特征图尺寸或控制感受野。
- 常见参数:
padding:int 或 4 元组,指定每个边的填充大小。例如padding=2或padding=(1, 2, 3, 4)。
归一化函数
InstanceNorm2d
- 作用:对每个样本的每个通道分别做归一化,常用于风格迁移等任务,能提升模型的泛化能力。
- 常见参数:
num_features:输入的通道数(即 C)。
BatchNorm2d
- 作用: 一个批次(batch)中所有样本的同一通道,计算全局均值和方差,常用于分类、目标检测。
- 常见参数:
num_features:输入的通道数(即 C)。
卷积函数
Conv2d
- 作用:二维卷积层,是 CNN 的核心操作,用于提取空间特征,假设图像尺寸为
,卷积核尺寸为 ,步长为s,填充为p,膨胀系数为d,则输出尺寸为
- 常见参数:
in_channels:输入通道数。out_channels:输出通道数(卷积核个数)。kernel_size:卷积核尺寸,可以是单个 int 或 (h, w) 元组。stride:步幅,默认 1。padding:填充,默认 0。dilation:膨胀系数,默认 1,即填充在卷积核内部的空间。groups:分组卷积,默认 1。bias:是否有偏置项,默认 True。
ConvTranspose2d
- 作用:二维转置卷积(反卷积),常用于上采样或生成更大空间分辨率的特征图。
- 输出尺寸(输入为
,卷积核 ,步长 s,填充 p,膨胀 d,输出填充 output_padding为):
- 常见参数:
in_channels:输入通道数。out_channels:输出通道数(卷积核个数)。kernel_size:卷积核尺寸,可以是单个 int 或 (h, w) 元组。stride:步幅,默认 1。padding:输入侧的零填充大小,默认 0。output_padding:为了解决上采样后尺寸歧义而添加的额外输出填充值,默认 0。dilation:膨胀系数,默认 1。groups:分组卷积,默认 1。bias:是否使用偏置项,默认 True。
- 缺点:转置卷积易造成checkerboard(棋盘格),常见原因为步长大于核尺寸的一半,或者连续使用多次转置卷积,或者参数(如stride和padding)设置不当,可使用nn.Upsample + 普通卷积来缓解和解决。
Upsample
- 作用:非参数化的上采样操作(不包含可学习权重),常用于放大特征图尺寸,可配合
mode选择最近邻、双线性等插值方式。 - 常见参数:
size:目标输出尺寸(H, W),不可与scale_factor同时存在。scale_factor:缩放因子(可为单个数或 (h, w) 元组)。mode:插值方式,如'nearest'、'bilinear'、'bicubic'、'trilinear'(3D)。align_corners:当mode为线性插值(如'bilinear'、'bicubic')时是否对齐角点,默认 False。
损失函数
MSELoss
- 作用:均方误差损失(Mean Squared Error Loss),用于回归任务,衡量预测值与真实值之间的均方差。
- 数学公式:
其中 为预测值, 为真实值, 为样本数。 - 常见参数:
reduction:指定输出结果的方式,取值有'mean'(默认,取均值)、'sum'(求和)、'none'(不聚合,返回每个元素的损失)。
L1Loss
- 作用:平均绝对误差损失(Mean Absolute Error Loss),用于回归任务,衡量预测值与真实值之间的绝对差。
- 数学公式:
其中 为预测值, 为真实值, 为样本数。 - 常见参数:
reduction:指定输出结果的方式,取值同上:'mean'(默认)、'sum'、'none'。