pytorchのモデル/オプティマイザのzero_grad()の違い
pytorhにoptimizerのzero_grad()とモデルのzero_grad()があることに気づいたので違いを調べた.optimizer がmodel.paremeters()を対象にしている場合,つまり全パラメタを対象にしている場合は両者は同じもの.
Optimizer.zero_grad() と nn.Module.zero_grad() の違い
* https://teratail.com/questions/261005
Optimizer.zero_grad() は最適化対象のすべてのテンソルの勾配を0で初期化します。 他方、nn.Module.zero_grad() はそのモジュールを構成するすべてのテンソルの勾配を初期化します。
Whats the difference between Optimizer.zero_grad() vs nn.Module.zero_grad()
- https://discuss.pytorch.org/t/whats-the-difference-between-optimizer-zero-grad-vs-nn-module-zero-grad/59233
- 一つのoptimizerが複数モデルを扱う場合,または複数のoptimizerが一つのモデルの異なる部分を扱う場合に使い分ける,という説明がされている