【发布时间】:2018-09-23 19:00:06
【问题描述】:
问题How to initialize weights in PyTorch? 展示了如何初始化Pytorch 中的权重。但是,Pytorch 中 Conv 和 Dense 的默认权重初始化器是什么? Pytorch 使用什么分布?
【问题讨论】:
标签: pytorch initializer
问题How to initialize weights in PyTorch? 展示了如何初始化Pytorch 中的权重。但是,Pytorch 中 Conv 和 Dense 的默认权重初始化器是什么? Pytorch 使用什么分布?
【问题讨论】:
标签: pytorch initializer
每个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。
对于卷积层,初始化基本相同。您只需通过将通道数乘以内核大小来计算输入数。
【讨论】: