引き続きお仕事でPyTorchを使った開発を行っているのですが、これまでKerasで高度にラッピングされた学習フレームワークしか経験が無かったので、お作法的なところで躓くこと・疑問に思うことがよくありました。 loss.backward()で計算グラフを伝って誤差逆伝播されるのはなんとなくわかる だけど、その計算方法や計算結果は誰が持ってて、入力側へどうやって渡してるのだろうか... optimizer.zero_grad()とoptimizer.step()は何をしているの? 今回はPyTorchの誤差逆伝播やパラメータ更新について調べて整理しました。 この投稿ではPyTorch 1.1.0を使ってます。 import torch import torch.optim as optim import numpy as np import matplotlib.pyplot as plt