質問 PyTorchで重みを初期化する方法は? は、Pytorch
で重みを初期化する方法を示しています。ただし、Conv
のDense
およびPytorch
のデフォルトの重み初期化子は何ですか? Pytorch
はどのディストリビューションを使用しますか?
各pytorch
レイヤーは、重みを初期化するためにレイヤー初期化の最後に呼び出されるメソッド_reset_parameters
_を実装します。レイヤーの実装を見つけることができます ここ 。
たとえば、pytorchではlinear
と呼ばれる密なレイヤーの場合、重みは均一に初期化されます
_stdv = 1. / math.sqrt(self.weight.size(1))
self.weight.data.uniform_(-stdv, stdv)
_
ここで、self.weight.size(1)
は入力の数です。これは、トレーニングの開始時に各層の分布の分散を1に正規化することにより、比較的類似した状態に保つために行われます。あなたはより詳細な説明を読むことができます ここ 。
畳み込み層の場合、初期化は基本的に同じです。チャネル数にカーネルサイズを掛けて、入力数を計算するだけです。