最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談pytorch中為什么要用 zero_grad() 將梯度清零

 更新時間:2021年05月31日 14:20:28   作者:小小鼠標(biāo)0  
這篇文章主要介紹了pytorch中為什么要用 zero_grad() 將梯度清零的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

pytorch中為什么要用 zero_grad() 將梯度清零

調(diào)用backward()函數(shù)之前都要將梯度清零,因為如果梯度不清零,pytorch中會將上次計算的梯度和本次計算的梯度累加。

這樣邏輯的好處是,當(dāng)我們的硬件限制不能使用更大的bachsize時,使用多次計算較小的bachsize的梯度平均值來代替,更方便,壞處當(dāng)然是每次都要清零梯度。

optimizer.zero_grad()
output = net(input)
loss = loss_f(output, target)
loss.backward()

補(bǔ)充:Pytorch 為什么每一輪batch需要設(shè)置optimizer.zero_grad

CSDN上有人寫過原因,但是其實(shí)寫得繁瑣了。

根據(jù)pytorch中的backward()函數(shù)的計算,當(dāng)網(wǎng)絡(luò)參量進(jìn)行反饋時,梯度是被積累的而不是被替換掉;但是在每一個batch時毫無疑問并不需要將兩個batch的梯度混合起來累積,因此這里就需要每個batch設(shè)置一遍zero_grad 了。

其實(shí)這里還可以補(bǔ)充的一點(diǎn)是,如果不是每一個batch就清除掉原有的梯度,而是比如說兩個batch再清除掉梯度,這是一種變相提高batch_size的方法,對于計算機(jī)硬件不行,但是batch_size可能需要設(shè)高的領(lǐng)域比較適合,比如目標(biāo)檢測模型的訓(xùn)練。

關(guān)于這一點(diǎn)可以參考這里

關(guān)于backward()的計算可以參考這里

補(bǔ)充:pytorch 踩坑筆記之w.grad.data.zero_()

在使用pytorch實(shí)現(xiàn)多項線性回歸中,在grad更新時,每一次運(yùn)算后都需要將上一次的梯度記錄清空,運(yùn)用如下方法:

w.grad.data.zero_()
b.grad.data.zero_() 

但是,運(yùn)行程序就會報如下錯誤:

報錯,grad沒有data這個屬性,

原因是,在系統(tǒng)將w的grad值初始化為none,第一次求梯度計算是在none值上進(jìn)行報錯,自然會沒有data屬性

修改方法:添加一個判斷語句,從第二次循環(huán)開始執(zhí)行求導(dǎo)運(yùn)算

for i in range(100):
    y_pred = multi_linear(x_train)
    loss = getloss(y_pred,y_train)
    if i != 0:
        w.grad.data.zero_()
        b.grad.data.zero_()
    loss.backward()
    w.data = w.data - 0.001 * w.grad.data
    b.data = b.data - 0.001 * b.grad.data

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python Django 添加首頁尾頁上一頁下一頁代碼實(shí)例

    Python Django 添加首頁尾頁上一頁下一頁代碼實(shí)例

    這篇文章主要介紹了Python Django 添加首頁尾頁上一頁下一頁代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Python中Generators教程的實(shí)現(xiàn)

    Python中Generators教程的實(shí)現(xiàn)

    本文主要介紹了Python中Generators教程的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python multiprocessing多進(jìn)程原理與應(yīng)用示例

    Python multiprocessing多進(jìn)程原理與應(yīng)用示例

    這篇文章主要介紹了Python multiprocessing多進(jìn)程原理與應(yīng)用,結(jié)合實(shí)例形式詳細(xì)分析了基于multiprocessing包的多進(jìn)程概念、原理及相關(guān)使用操作技巧,需要的朋友可以參考下
    2019-02-02
  • python 如何做一個識別率百分百的OCR

    python 如何做一個識別率百分百的OCR

    最近在做游戲自動化(測試),也就是游戲腳本了。主要有以下幾個需求識別率百分百、速度要快、模型要小,本文就來著手實(shí)現(xiàn)它
    2021-05-05
  • python小練習(xí)之爬魷魚游戲的評價生成詞云

    python小練習(xí)之爬魷魚游戲的評價生成詞云

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python爬取熱火的魷魚游戲評價,大家可以在過程中查缺補(bǔ)漏,提升水平
    2021-10-10
  • PyQt實(shí)現(xiàn)異步數(shù)據(jù)庫請求的實(shí)戰(zhàn)記錄

    PyQt實(shí)現(xiàn)異步數(shù)據(jù)庫請求的實(shí)戰(zhàn)記錄

    開發(fā)軟件的時候不可避免要和數(shù)據(jù)庫發(fā)生交互,但是有些 SQL 請求非常耗時,如果在主線程中發(fā)送請求,可能會造成界面卡頓,本文將介紹一種讓數(shù)據(jù)庫請求變得和前端的 ajax 請求一樣簡單,希望對大家有所幫助
    2023-12-12
  • python處理emoji表情(兩個函數(shù)解決兩者之間的聯(lián)系)

    python處理emoji表情(兩個函數(shù)解決兩者之間的聯(lián)系)

    這篇文章主要介紹了python處理emoji表情,主要通過兩個函數(shù)解決兩者之間的聯(lián)系,本文通過實(shí)例代碼給大家介紹的非常完美,對python emoji表情的相關(guān)知識感興趣的朋友一起看看吧
    2021-05-05
  • Python中用xlwt制作表格實(shí)例講解

    Python中用xlwt制作表格實(shí)例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于Python中用xlwt制作表格實(shí)例講解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-11-11
  • Python教程之全局變量用法

    Python教程之全局變量用法

    這篇文章主要介紹了Python教程之全局變量用法,結(jié)合實(shí)例形式分析了Python全局變量的定義、修改等使用方法及注意事項,需要的朋友可以參考下
    2016-06-06
  • 如何在Python中隱藏和加密密碼示例詳解

    如何在Python中隱藏和加密密碼示例詳解

    Maskpass是一個類似getpass的Python庫,但是具有一些高級功能,比如掩蔽和顯示,下面這篇文章主要給大家介紹了關(guān)于如何在Python中隱藏和加密密碼的相關(guān)資料,需要的朋友可以參考下
    2022-02-02

最新評論

怀集县| 黑山县| 和顺县| 东兰县| 琼海市| 资阳市| 邯郸市| 沁水县| 平罗县| 铁岭市| 深泽县| 融水| 鞍山市| 淄博市| 宿州市| 当阳市| 博客| 马鞍山市| 红河县| 吕梁市| 蕲春县| 远安县| 嵊州市| 饶河县| 孟津县| 龙胜| 合作市| 玉环县| 广饶县| 阿合奇县| 秦皇岛市| 本溪市| 阿勒泰市| 紫金县| 洪江市| 石首市| 邳州市| 阿图什市| 湘乡市| 沙田区| 定州市|