7. 自動(dòng)求導(dǎo) 2022-09-16

一個(gè)前向傳播網(wǎng)絡(luò)框架

網(wǎng)絡(luò)計(jì)算流程

y=f(w, x) = Wx
y'=f'(w, x)w' = X
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練需要使用損失函數(shù)的梯度,torch提供了一個(gè)torch.autograd的自動(dòng)求導(dǎo)機(jī)制尺栖。

創(chuàng)建一個(gè)網(wǎng)絡(luò)嫡纠,并獲取梯度

import torch

x = torch.ones(5)  # input tensor
y = torch.zeros(3)  # expected output
w = torch.randn(5, 3, requires_grad=True)
b = torch.randn(3, requires_grad=True)
z = torch.matmul(x, w)+b
loss = torch.nn.functional.binary_cross_entropy_with_logits(z, y)

print(f"Gradient function for z = {z.grad_fn}")
print(f"Gradient function for loss = {loss.grad_fn}")

這里拆分了w和b,在一些網(wǎng)絡(luò)的計(jì)算中延赌,可以按W = [w, b]除盏,作為統(tǒng)一參數(shù)。

使用 grad() 計(jì)算梯度

對(duì)于一個(gè)網(wǎng)絡(luò)默認(rèn)只會(huì)對(duì)最后一層網(wǎng)絡(luò)進(jìn)行自動(dòng)求導(dǎo)挫以,即最后一層requires_grad=true
如需對(duì)全網(wǎng)絡(luò)進(jìn)行求導(dǎo)者蠕,需使用

loss.backward()
print(w.grad)
print(b.grad)

關(guān)閉梯度計(jì)算

在網(wǎng)絡(luò)的應(yīng)用(前向計(jì)算, 使用部分已訓(xùn)練網(wǎng)絡(luò))中,為了計(jì)算效率掐松,可以關(guān)閉梯度的自動(dòng)計(jì)算

z = torch.matmul(x, w)+b
print(z.requires_grad)

with torch.no_grad():
    z = torch.matmul(x, w)+b
print(z.requires_grad)

或者

z = torch.matmul(x, w)+b
z_det = z.detach()
print(z_det.requires_grad)

網(wǎng)絡(luò)的正向踱侣,反向傳播

在torch中網(wǎng)絡(luò)表達(dá)為DAG(directed acyclic graph),這里考慮mini-batch的情況大磺。
在前向計(jì)算中autograd 完成如下兩件事:

  1. 根據(jù)單層網(wǎng)絡(luò)計(jì)算tensor結(jié)果
  2. 維護(hù)網(wǎng)絡(luò)梯度計(jì)算函數(shù)
    在反向傳播中抡句,調(diào)用.backward(),完成如下事情:
  3. 使用tensor的梯度函數(shù) .grad_fn計(jì)算梯度
  4. 累計(jì)梯度結(jié)果到 .grad中
  5. 使用鏈?zhǔn)椒▌t杠愧,計(jì)算每一層

Jacobin矩陣的計(jì)算

對(duì)于多維loss function待榔, 在計(jì)算y=f(x),在backward中會(huì)自動(dòng)計(jì)算Jacobian Product: v^T*J,其中v是對(duì)應(yīng)的tensor。

image.png
inp = torch.eye(5, requires_grad=True)
out = (inp+1).pow(2)
out.backward(torch.ones_like(inp), retain_graph=True)
print(f"First call\n{inp.grad}")
out.backward(torch.ones_like(inp), retain_graph=True)
print(f"\nSecond call\n{inp.grad}")
inp.grad.zero_()
out.backward(torch.ones_like(inp), retain_graph=True)
print(f"\nCall after zeroing gradients\n{inp.grad}")
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末流济,一起剝皮案震驚了整個(gè)濱河市锐锣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌绳瘟,老刑警劉巖雕憔,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異糖声,居然都是意外死亡斤彼,警方通過查閱死者的電腦和手機(jī)分瘦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來畅卓,“玉大人擅腰,你說我怎么就攤上這事∥膛耍” “怎么了趁冈?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拜马。 經(jīng)常有香客問我渗勘,道長,這世上最難降的妖魔是什么俩莽? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任旺坠,我火速辦了婚禮,結(jié)果婚禮上扮超,老公的妹妹穿的比我還像新娘取刃。我一直安慰自己,他們只是感情好出刷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布璧疗。 她就那樣靜靜地躺著,像睡著了一般馁龟。 火紅的嫁衣襯著肌膚如雪崩侠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天坷檩,我揣著相機(jī)與錄音却音,去河邊找鬼。 笑死矢炼,一個(gè)胖子當(dāng)著我的面吹牛系瓢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播句灌,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼八拱,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了涯塔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤清蚀,失蹤者是張志新(化名)和其女友劉穎匕荸,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枷邪,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡榛搔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年诺凡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片践惑。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡腹泌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尔觉,到底是詐尸還是另有隱情凉袱,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布侦铜,位于F島的核電站专甩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏钉稍。R本人自食惡果不足惜涤躲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望贡未。 院中可真熱鬧种樱,春花似錦、人聲如沸俊卤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瘾蛋。三九已至俐镐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哺哼,已是汗流浹背佩抹。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留取董,地道東北人棍苹。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像茵汰,于是被迫代替她去往敵國和親枢里。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容