PyTorchとTensorFlowで再現性の違いが出ることはよくある。
その要因の一つが初期化手法の違い。
なのでドキュメントとコードを当たって初期化手法をチェックした。
PyTorch vs TensorFlow
- Linear: kaiming_uniform(a=√5) == ~U[±√1/fan_in] vs
glorot_uniform
(xavier_uniform) == ~U[±√6/(fan_in+fan_out)] 1
- Conv1D: kaiming_uniform(a=√5) == ~U[±√1/fan_in] 2 vs
glorot_uniform
(xavier_uniform) == ~U[±√6/(fan_in+fan_out)]
- Embedding: ~N(0,1) vs ~U(-0.05, 0.05) 3