婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Pytorch中的backward()多個loss函數用法

Pytorch中的backward()多個loss函數用法

熱門標簽:地圖標注線上如何操作 開封自動外呼系統怎么收費 電銷機器人的風險 手機網頁嵌入地圖標注位置 天津電話機器人公司 應電話機器人打電話違法嗎 開封語音外呼系統代理商 河北防封卡電銷卡 400電話辦理哪種

Pytorch的backward()函數

假若有多個loss函數,如何進行反向傳播和更新呢?

 x = torch.tensor(2.0, requires_grad=True)                                                    
 y = x**2                                                                                     
 z = x                                                                                        
# 反向傳播
 y.backward()                                                                                 
 x.grad                                                                                       
 tensor(4.)
 z.backward()                                                                                 
 x.grad                                                                                       
 tensor(5.) ## 累加

補充:Pytorch中torch.autograd ---backward函數的使用方法詳細解析,具體例子分析

backward函數

官方定義:

torch.autograd.backward(tensors, grad_tensors=None, retain_graph=None, create_graph=False, grad_variables=None)

Computes the sum of gradients of given tensors w.r.t. graph leaves.The graph is differentiated using the chain rule. If any of tensors are non-scalar (i.e. their data has more than one element) and require gradient, the function additionally requires specifying grad_tensors. It should be a sequence of matching length, that contains gradient of the differentiated function w.r.t. corresponding tensors (None is an acceptable value for all tensors that don't need gradient tensors). This function accumulates gradients in the leaves - you might need to zero them before calling it.

翻譯和解釋:

參數tensors如果是標量,函數backward計算參數tensors對于給定圖葉子節點的梯度( graph leaves,即為設置requires_grad=True的變量)。

參數tensors如果不是標量,需要另外指定參數grad_tensors,參數grad_tensors必須和參數tensors的長度相同。在這一種情況下,backward實際上實現的是代價函數(loss = torch.sum(tensors*grad_tensors); 注:torch中向量*向量實際上是點積,因此tensors和grad_tensors的維度必須一致 )關于葉子節點的梯度計算,而不是參數tensors對于給定圖葉子節點的梯度。如果指定參數grad_tensors=torch.ones((size(tensors))),顯而易見,代價函數關于葉子節點的梯度,也就等于參數tensors對于給定圖葉子節點的梯度。

每次backward之前,需要注意葉子梯度節點是否清零,如果沒有清零,第二次backward會累計上一次的梯度。

下面給出具體的例子:

import torch
x=torch.randn((3),dtype=torch.float32,requires_grad=True)
y = torch.randn((3),dtype=torch.float32,requires_grad=True)
z = torch.randn((3),dtype=torch.float32,requires_grad=True)
t = x + y
loss = t.dot(z)  #求向量的內積

在調用 backward 之前,可以先手動求一下導數,應該是:

用代碼實現求導:

loss.backward(retain_graph=True)
print(z,x.grad,y.grad)  #預期打印出的結果都一樣
print(t,z.grad)    #預期打印出的結果都一樣
print(t.grad)    #在這個例子中,x,y,z就是葉子節點,而t不是,t的導數在backward的過程中求出來回傳之后就會被釋放,因而預期結果是None

結果和預期一致:

tensor([-2.6752, 0.2306, -0.8356], requires_grad=True) tensor([-2.6752, 0.2306, -0.8356]) tensor([-2.6752, 0.2306, -0.8356])

tensor([-1.1916, -0.0156, 0.8952], grad_fn=AddBackward0>) tensor([-1.1916, -0.0156, 0.8952]) None

敲重點:

注意到前面函數的解釋中,在參數tensors不是標量的情況下,tensor.backward(grad_tensors)實現的是代價函數(torch.sum(tensors*grad_tensors))關于葉子節點的導數。

在上面例子中,loss = t.dot(z),因此用t.backward(z),實現的就是loss對于所有葉子結點的求導,實際運算結果和預期吻合。

t.backward(z,retain_graph=True)
print(z,x.grad,y.grad)
print(t,z.grad)

運行結果如下:

tensor([-0.7830, 1.4468, 1.2440], requires_grad=True) tensor([-0.7830, 1.4468, 1.2440]) tensor([-0.7830, 1.4468, 1.2440])

tensor([-0.7145, -0.7598, 2.0756], grad_fn=AddBackward0>) None

上面的結果中,出現了一個問題,雖然loss關于x和y的導數正確,但是z不再是葉子節點了。

問題1:

當使用t.backward(z,retain_graph=True)的時候, print(z.grad)結果是None,這意味著z不再是葉子節點,這是為什么呢?

另外一個嘗試,loss = t.dot(z)=z.dot(t),但是如果用z.backward(t)替換t.backward(z,retain_graph=True),結果卻不同。

z.backward(t)
print(z,x.grad,y.grad)
print(t,z.grad)

運行結果:

tensor([-1.0716, -1.3643, -0.0016], requires_grad=True) None None

tensor([-0.7324, 0.9763, -0.4036], grad_fn=AddBackward0>) tensor([-0.7324, 0.9763, -0.4036])

問題2:

上面的結果中可以看到,使用z.backward(t),x和y都不再是葉子節點了,z仍然是葉子節點,且得到的loss相對于z的導數正確。

上述仿真出現的兩個問題,我還不能解釋,希望和大家交流。

問題1:

當使用t.backward(z,retain_graph=True)的時候, print(z.grad)結果是None,這意味著z不再是葉子節點,這是為什么呢?

問題2:

上面的結果中可以看到,使用z.backward(t),x和y都不再是葉子節點了,z仍然是葉子節點,且得到的loss相對于z的導數正確。

另外強調一下,每次backward之前,需要注意葉子梯度節點是否清零,如果沒有清零,第二次backward會累計上一次的梯度。

簡單的代碼可以看出:

#測試1,:對比上兩次單獨執行backward,此處連續執行兩次backward
t.backward(z,retain_graph=True)
print(z,x.grad,y.grad)
print(t,z.grad)
z.backward(t)
print(z,x.grad,y.grad)
print(t,z.grad)
# 結果x.grad,y.grad本應該是None,因為保留了第一次backward的結果而打印出上一次梯度的結果
tensor([-0.5590, -1.4094, -1.5367], requires_grad=True) tensor([-0.5590, -1.4094, -1.5367]) tensor([-0.5590, -1.4094, -1.5367])tensor([-1.7914,  0.8761, -0.3462], grad_fn=AddBackward0>) Nonetensor([-0.5590, -1.4094, -1.5367], requires_grad=True) tensor([-0.5590, -1.4094, -1.5367]) tensor([-0.5590, -1.4094, -1.5367])tensor([-1.7914,  0.8761, -0.3462], grad_fn=AddBackward0>) tensor([-1.7914,  0.8761, -0.3462])
#測試2,:連續執行兩次backward,并且清零,可以驗證第二次backward沒有計算x和y的梯度
t.backward(z,retain_graph=True)
print(z,x.grad,y.grad)
print(t,z.grad)
x.grad.data.zero_()
y.grad.data.zero_()
z.backward(t)
print(z,x.grad,y.grad)
print(t,z.grad)
tensor([ 0.8671, 0.6503, -1.6643], requires_grad=True) tensor([ 0.8671, 0.6503, -1.6643]) tensor([ 0.8671, 0.6503, -1.6643])tensor([1.6231e+00, 1.3842e+00, 4.6492e-06], grad_fn=AddBackward0>) Nonetensor([ 0.8671,  0.6503, -1.6643], requires_grad=True) tensor([0., 0., 0.]) tensor([0., 0., 0.])tensor([1.6231e+00, 1.3842e+00, 4.6492e-06], grad_fn=AddBackward0>) tensor([1.6231e+00, 1.3842e+00, 4.6492e-06])

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

您可能感興趣的文章:
  • PyTorch梯度裁剪避免訓練loss nan的操作
  • Pytorch BCELoss和BCEWithLogitsLoss的使用
  • Pytorch訓練網絡過程中loss突然變為0的解決方案
  • pytorch MSELoss計算平均的實現方法
  • pytorch loss反向傳播出錯的解決方案
  • Pytorch損失函數nn.NLLLoss2d()用法說明
  • pytorch使用tensorboardX進行loss可視化實例

標簽:宿遷 常州 山東 蘭州 駐馬店 江蘇 六盤水 成都

巨人網絡通訊聲明:本文標題《Pytorch中的backward()多個loss函數用法》,本文關鍵詞  Pytorch,中的,backward,多個,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Pytorch中的backward()多個loss函數用法》相關的同類信息!
  • 本頁收集關于Pytorch中的backward()多個loss函數用法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    人人爽香蕉精品| 国产精品成人免费在线| 色香蕉久久蜜桃| 9i看片成人免费高清| 成人ar影院免费观看视频| 国产一区二区三区在线看麻豆| 九九精品视频在线看| 国产综合久久久久久鬼色| 国产精品一区在线观看乱码| 懂色av一区二区三区免费观看| 从欧美一区二区三区| 97久久超碰国产精品| 欧美视频自拍偷拍| 欧美电影免费观看完整版| 久久久久久**毛片大全| 《视频一区视频二区| 午夜久久久久久| 精品无人码麻豆乱码1区2区| 成人免费视频一区| 欧美日韩另类一区| 精品国产乱码久久久久久老虎| 欧美激情在线一区二区| 亚洲精品乱码久久久久| 久久精品免费看| 高清不卡在线观看| 欧美高清dvd| 国产农村妇女毛片精品久久麻豆| 国产精品家庭影院| 首页亚洲欧美制服丝腿| 国产99久久久久| 欧美综合亚洲图片综合区| 日韩久久免费av| 亚洲三级在线观看| 极品美女销魂一区二区三区免费| 91视频精品在这里| 精品国产一区二区国模嫣然| 洋洋成人永久网站入口| 国产精品99久久久久久似苏梦涵| 欧美丝袜自拍制服另类| 中文字幕av在线一区二区三区| 午夜视频在线观看一区| 波多野结衣亚洲| 精品久久久久久久一区二区蜜臀| 亚洲精品精品亚洲| 国产福利一区二区三区视频| 欧美喷潮久久久xxxxx| 亚洲欧洲三级电影| 国产一区二区剧情av在线| 欧美日韩激情在线| 亚洲欧洲另类国产综合| 国产成人免费视频一区| 日韩一级成人av| 香蕉成人啪国产精品视频综合网| 不卡一卡二卡三乱码免费网站| 久久老女人爱爱| 美女看a上一区| 在线成人午夜影院| 亚洲高清中文字幕| 欧美日韩亚洲综合在线 | 一色屋精品亚洲香蕉网站| 九一九一国产精品| 日韩一区二区三区在线视频| 亚洲影院理伦片| 在线免费观看成人短视频| 亚洲女爱视频在线| 91一区二区在线观看| 国产精品电影一区二区三区| 成人一级片网址| 久久久久国产精品麻豆| 国产精品一区一区三区| 久久久国际精品| 国产乱人伦偷精品视频不卡| 国产日韩欧美电影| 国产麻豆成人传媒免费观看| 国产日韩欧美制服另类| 成人性视频免费网站| 国产精品三级久久久久三级| 99久久精品免费看国产| 亚洲欧美视频在线观看| 欧美色电影在线| 日本免费新一区视频| 日韩久久精品一区| 国产一区二区三区免费看| 久久亚洲欧美国产精品乐播| 韩日精品视频一区| 国产精品免费人成网站| 欧美影视一区二区三区| 日韩黄色在线观看| 久久精品一区二区三区不卡| 成人动漫视频在线| 亚洲3atv精品一区二区三区| 日韩欧美高清一区| 国产不卡视频在线播放| 一区二区日韩电影| 日韩欧美亚洲国产另类| 岛国av在线一区| 一区二区三区欧美日| 日韩欧美国产不卡| 91亚洲国产成人精品一区二三| 亚洲大型综合色站| 久久综合九色综合欧美亚洲| 99久免费精品视频在线观看| 日韩成人免费电影| 国产欧美日韩综合| 欧美二区在线观看| 成人禁用看黄a在线| 日韩精品免费专区| 中文字幕亚洲在| 日韩欧美一级片| 色综合色综合色综合色综合色综合 | 在线观看欧美精品| 国产资源在线一区| 亚洲综合在线观看视频| 日韩免费视频一区二区| 色又黄又爽网站www久久| 久久91精品久久久久久秒播| 夜夜嗨av一区二区三区四季av| 久久新电视剧免费观看| 欧美日韩一区三区| yourporn久久国产精品| 理论片日本一区| 亚洲一区二区三区小说| 欧美国产精品v| 日韩视频免费观看高清完整版在线观看| 国产suv精品一区二区6| 蜜桃av一区二区三区电影| 亚洲线精品一区二区三区八戒| 国产精品欧美一区喷水| 国产亚洲欧美一区在线观看| 7777精品伊人久久久大香线蕉完整版| 不卡在线视频中文字幕| 国产成人精品午夜视频免费 | 成人av一区二区三区| 久久99久久久久| 奇米一区二区三区| 亚洲成av人片一区二区梦乃| 亚洲人成在线播放网站岛国| 国产亚洲婷婷免费| 国产日韩欧美一区二区三区综合| 欧美成人bangbros| 欧美xingq一区二区| 欧美一区二区播放| 91精选在线观看| 欧美一区二区精品| 日韩欧美一区二区视频| 日韩视频在线你懂得| 91精品欧美一区二区三区综合在 | 在线播放中文一区| 欧美日韩国产电影| 欧美日韩另类一区| 91精品国产综合久久香蕉的特点| 91精品中文字幕一区二区三区| 欧美亚洲综合网| 9191久久久久久久久久久| 56国语精品自产拍在线观看| 日韩一级黄色片| 久久免费午夜影院| 国产精品嫩草久久久久| 亚洲美女偷拍久久| 视频一区免费在线观看| 精品一区二区综合| 国产精品影音先锋| 91在线精品一区二区| 欧美日韩免费在线视频| 日韩欧美精品在线视频| 久久女同性恋中文字幕| 国产精品九色蝌蚪自拍| 亚洲狠狠爱一区二区三区| 久久电影国产免费久久电影| 国产一区二区h| 色成年激情久久综合| 欧美日韩亚洲另类| 26uuu另类欧美| 一区二区三区不卡视频在线观看| 日韩国产成人精品| 国产suv精品一区二区三区| 在线观看日韩高清av| 欧美成人欧美edvon| 亚洲欧美日韩国产成人精品影院| 日本成人在线不卡视频| 成人精品视频一区二区三区| 欧美亚洲综合网| 久久麻豆一区二区| 一区二区三区四区在线播放| 国产一本一道久久香蕉| 欧美性生活久久| 日本一区二区综合亚洲| 日韩国产欧美在线视频| 99精品久久99久久久久| 精品久久久久久亚洲综合网| 亚洲一区影音先锋| 成人免费福利片| 日韩免费观看高清完整版在线观看| 亚洲嫩草精品久久| 国产一区二区三区国产| 91精品国产日韩91久久久久久| 亚洲视频免费在线观看| 国产精品一区久久久久| 日韩午夜电影在线观看| 亚洲综合区在线|