torch:clip-grad-norm
(torch:clip-grad-norm params max-norm)
params (モジュール、オプティマイザのパラメータリスト、またはテンソルのリスト)
に対する勾配ノルムのクリッピング (PyTorch の
torch.nn.utils.clip_grad_norm_) です。
すべての勾配を 1 本の長いベクトルとみなしたときの L2 ノルムを返します。
クリップ前に測定した値なので、学習ループでそのままログに出せます。そのノルムが
max-norm を超えた場合、すべての勾配が max-norm / (norm + 1e-6) (PyTorch と
同じ分母) でその場でスケールされます。超えない場合は何も変更しません。勾配が
届いていないパラメータはスキップされます。
呼ぶ位置は torch:backward と
torch:step の間です。オプティマイザがこれから読む勾配を
書き換えるだけで、テープには触れません。