PyTorch中Conv、Dense层默认权重初始化器及分布咨询
PyTorch中Conv与Dense层的默认权重初始化说明
嘿,这就给你拆解清楚PyTorch里卷积(Conv)和全连接(Dense/Linear)层的默认权重初始化规则:
卷积(Conv)层
- 默认初始化器:
kaiming_uniform_(He均匀初始化方法) - 采样分布:均匀分布,采样区间是基于输入通道数和卷积核尺寸计算的,具体为
[-sqrt(6/(in_channels * kernel_size²)), sqrt(6/(in_channels * kernel_size²))]。这个初始化是为了适配ReLU类激活函数,让每层的输入输出方差尽量保持一致,避免梯度消失或爆炸。
全连接(Dense/Linear)层
- 默认初始化器:
xavier_uniform_(Glorot均匀初始化方法) - 采样分布:均匀分布,采样区间由输入特征数和输出特征数共同决定,即
[-sqrt(6/(in_features + out_features)), sqrt(6/(in_features + out_features))]。它的设计目标是让信号在网络前向和反向传播时都能保持合适的方差。
如果想直观验证的话,你可以直接打印层的权重看看,比如跑这段代码:
import torch import torch.nn as nn # 实例化卷积层 conv_layer = nn.Conv2d(3, 16, 3) print(conv_layer.weight) # 权重值会落在He均匀分布的计算区间内 # 实例化全连接层 linear_layer = nn.Linear(10, 20) print(linear_layer.weight) # 权重值对应Glorot均匀分布的范围
内容的提问来源于stack exchange,提问作者urningod




