DNNの訓練は(mini)batchで行う場合、Tensorの機能を生かし、目標関数の誤差を簡単に(mini)batch毎に累積され、これを用いてDNNのパラメータのgradient値が算出され、DNNのパラメータの更新に使われます。これは実装の現状です。要はわざわざgradientを累積計算を行う必要性はないですね❣
なので、毎回、loss.backward()を実行する直前にmodel.zero_grad()を実行するわけ。
(loss.backward()は余計にgradientの累算をするから)
上記と逆に、わざわざgradientを累積計算する必要あるケースを知りたいのです。
ご存じの方よろしくお願いいたします。
あなたの回答
tips
プレビュー