pytorch自動(dòng)求梯度autograd的實(shí)現(xiàn)
autograd是pytorch構(gòu)建神經(jīng)網(wǎng)絡(luò)的核心。
在 PyTorch 中,結(jié)合以下代碼例子,當(dāng)你對(duì)一個(gè)張量 x 設(shè)置 requires_grad=True 時(shí),你實(shí)際上是告訴 PyTorch 需要跟蹤所有對(duì)這個(gè)張量的操作以便未來(lái)可以計(jì)算梯度。當(dāng)你調(diào)用 out.backward() 時(shí),PyTorch 會(huì)自動(dòng)計(jì)算關(guān)于 out 的梯度,并逆向傳播回 x。
在以下代碼中:
x = torch.ones(2,2) print(x) x.requires_grad=True print(x) y = x + 2 z = y*y*3 out = z.mean() print(out) out.backward() print(x.grad) print(y.grad) # 這一行會(huì)報(bào)錯(cuò),因?yàn)?y 不需要梯度,y為非葉子張量
y 是由 x 通過(guò)一個(gè)簡(jiǎn)單的加法操作得到的。由于 y 本身并沒(méi)有設(shè)置 requires_grad=True,PyTorch 沒(méi)有跟蹤 y 的操作歷史,因此無(wú)法計(jì)算 y 關(guān)于 out 的梯度。
如果你想要計(jì)算 y 的梯度,你需要在創(chuàng)建 y 之前也設(shè)置 requires_grad=True。但是,通常情況下,我們不需要對(duì)中間變量求梯度,我們只需要對(duì)最終輸出的梯度感興趣,然后通過(guò)反向傳播計(jì)算出所有需要的梯度。
如果你確實(shí)需要對(duì) y 求梯度,可以這樣做:
x = torch.ones(2,2, requires_grad=True) y = x + 2 z = y*y*3 out = z.mean() out.backward() print(x.grad) # 計(jì)算 x 的梯度 print(y.grad) # 現(xiàn)在可以計(jì)算 y 的梯度了
在這個(gè)修改后的代碼中,x 和 y 都設(shè)置了 requires_grad=True,因此 PyTorch 會(huì)跟蹤它們所有的操作,你可以計(jì)算 y 關(guān)于 out 的梯度。但是請(qǐng)注意,通常情況下,我們只需要計(jì)算最終輸出(在這個(gè)例子中是 out)關(guān)于輸入變量(在這個(gè)例子中是 x)的梯度。
到此這篇關(guān)于pytorch自動(dòng)求梯度autograd的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)pytorch自動(dòng)求梯度autograd內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- PyTorch的張量tensor和自動(dòng)求導(dǎo)autograd詳解
- PyTorch?Autograd的核心原理和功能深入探究
- Pytorch?autograd與邏輯回歸的實(shí)現(xiàn)詳解
- 關(guān)于pytorch求導(dǎo)總結(jié)(torch.autograd)
- PyTorch一小時(shí)掌握之a(chǎn)utograd機(jī)制篇
- pytorch-autograde-計(jì)算圖的特點(diǎn)說(shuō)明
- pytorch 中autograd.grad()函數(shù)的用法說(shuō)明
- 淺談Pytorch中autograd的若干(踩坑)總結(jié)
相關(guān)文章
Python語(yǔ)法學(xué)習(xí)之進(jìn)程間的通信方式
進(jìn)程在創(chuàng)建之后是沒(méi)有辦法獲取返回值的,但有的時(shí)候兩個(gè)進(jìn)程之間需要進(jìn)行相互之間的配合才能完成工作,這就需要通信的幫助。本文主要介紹了Python中進(jìn)程間的通信方式,需要的可以了解一下2022-04-04
Python爬取動(dòng)態(tài)網(wǎng)頁(yè)中圖片的完整實(shí)例
這篇文章主要給大家介紹了關(guān)于Python爬取動(dòng)態(tài)網(wǎng)頁(yè)中圖片的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
python使用pandas讀寫(xiě)excel文件的方法實(shí)例
pandas是一個(gè)十分強(qiáng)大的數(shù)據(jù)處理工具,最近需要處理數(shù)據(jù)并輸入到excel,簡(jiǎn)單列舉它的用法,這篇文章主要給大家介紹了關(guān)于python使用pandas讀寫(xiě)excel文件的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
Python如何實(shí)現(xiàn)對(duì).xls文件表頭的修改
這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)對(duì).xls文件表頭的修改功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-03-03

