pytorch 中 conv 的默认权重初始化器是啥?

Posted

技术标签:

【中文标题】pytorch 中 conv 的默认权重初始化器是啥?【英文标题】:what is the default weight initializer for conv in pytorch?pytorch 中 conv 的默认权重初始化器是什么? 【发布时间】:2018-09-23 19:00:06 【问题描述】:

问题How to initialize weights in PyTorch? 展示了如何初始化Pytorch 中的权重。但是,PytorchConvDense 的默认权重初始化器是什么? Pytorch 使用什么分布?

【问题讨论】:

【参考方案1】:

每个pytorch 层都实现了reset_parameters 方法,该方法在层初始化结束时调用以初始化权重。 你可以找到层的实现here。

对于在pytorch中称为linear的dense layer,权重是统一初始化的

stdv = 1. / math.sqrt(self.weight.size(1))
self.weight.data.uniform_(-stdv, stdv)

其中self.weight.size(1) 是输入的数量。这样做是为了在训练开始时通过将每一层的分布的方差归一化为一个来保持相对相似。你可以阅读更详细的解释here。

对于卷积层,初始化基本相同。您只需通过将通道数乘以内核大小来计算输入数。

【讨论】:

以上是关于pytorch 中 conv 的默认权重初始化器是啥?的主要内容,如果未能解决你的问题,请参考以下文章

PyTorch初始化网络各层权重

PyTorch 模型层权重如何被隐式初始化? [复制]

在 PyTorch 中,默认情况下如何初始化层权重和偏差?

pytorch之词嵌入

在 pytorch 中修改预训练模型时,旧的权重会重新初始化吗?

比较 Conv2D 与 Tensorflow 和 PyTorch 之间的填充