Pytorch 为什么每一轮batch需要设置optimizer.zero_grad
生活随笔
收集整理的這篇文章主要介紹了
Pytorch 为什么每一轮batch需要设置optimizer.zero_grad
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
根據(jù)pytorch中的backward()函數(shù)的計(jì)算,當(dāng)網(wǎng)絡(luò)參量進(jìn)行反饋時(shí),梯度是被積累的而不是被替換掉;但是在每一個(gè)batch時(shí)毫無疑問并不需要將兩個(gè)batch的梯度混合起來累積,因此這里就需要每個(gè)batch設(shè)置一遍zero_grad 了。
其實(shí)這里還可以補(bǔ)充的一點(diǎn)是,如果不是每一個(gè)batch就清除掉原有的梯度,而是比如說兩個(gè)batch再清除掉梯度,這是一種變相提高batch_size的方法,對于計(jì)算機(jī)硬件不行,但是batch_size可能需要設(shè)高的領(lǐng)域比較適合,比如目標(biāo)檢測模型的訓(xùn)練。
?
總結(jié)
以上是生活随笔為你收集整理的Pytorch 为什么每一轮batch需要设置optimizer.zero_grad的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV学习笔记(十五):图像仿射变
- 下一篇: 器件篇:步进电机