91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決torch.autograd.backward中的參數問題

發布時間:2021-08-04 10:27:25 來源:億速云 閱讀:145 作者:小新 欄目:開發技術

這篇文章主要介紹了如何解決torch.autograd.backward中的參數問題,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

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

給定圖的葉子節點variables, 計算圖中變量的梯度和。 計算圖可以通過鏈式法則求導。如果variables中的任何一個variable是 非標量(non-scalar)的,且requires_grad=True。那么此函數需要指定grad_variables,它的長度應該和variables的長度匹配,里面保存了相關variable的梯度(對于不需要gradient tensor的variable,None是可取的)。

此函數累積leaf variables計算的梯度。你可能需要在調用此函數之前將leaf variable的梯度置零。

參數:

variables(變量的序列) - 被求微分的葉子節點,即 ys 。

grad_variables((張量,變量)的序列或無) - 對應variable的梯度。僅當variable不是標量且需要求梯度的時候使用。

retain_graph(bool,可選) - 如果為False,則用于釋放計算grad的圖。請注意,在幾乎所有情況下,沒有必要將此選項設置為True,通常可以以更有效的方式解決。默認值為create_graph的值。

create_graph(bool,可選) - 如果為True,則將構造派生圖,允許計算更高階的派生產品。默認為False。

我這里舉一個官方的例子

import torch
from torch.autograd import Variable
x = Variable(torch.ones(2, 2), requires_grad=True)
y = x + 2
z = y * y * 3
out = z.mean()
out.backward()#這里是默認情況,相當于out.backward(torch.Tensor([1.0]))
print(x.grad)

輸出結果是

Variable containing:
 4.5000 4.5000
 4.5000 4.5000
[torch.FloatTensor of size 2x2]

如何解決torch.autograd.backward中的參數問題

接著我們繼續

x = torch.randn(3)
x = Variable(x, requires_grad=True)

y = x * 2
while y.data.norm() < 1000:
  y = y * 2

gradients = torch.FloatTensor([0.1, 1.0, 0.0001])
y.backward(gradients)
print(x.grad)

輸出結果是

Variable containing:
 204.8000
 2048.0000
  0.2048
[torch.FloatTensor of size 3]

這里這個gradients為什么要是[0.1, 1.0, 0.0001]?

如果輸出的多個loss權重不同的話,例如有三個loss,一個是x loss,一個是y loss,一個是class loss。那么很明顯的不可能所有loss對結果影響程度都一樣,他們之間應該有一個比例。那么比例這里指的就是[0.1, 1.0, 0.0001],這個問題中的loss對應的就是上面說的y,那么這里的輸出就很好理解了dy/dx=0.1*dy1/dx+1.0*dy2/dx+0.0001*dy3/dx。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何解決torch.autograd.backward中的參數問題”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沧源| 克拉玛依市| 海宁市| 盘锦市| 婺源县| 宜城市| 甘德县| 张家界市| 烟台市| 五大连池市| 高青县| 融水| 离岛区| 宝山区| 伊吾县| 平潭县| 拉萨市| 海淀区| 金山区| 东山县| 平顶山市| 迁安市| 吉林省| 兰溪市| 桂东县| 上思县| 民县| 郯城县| 莆田市| 长治县| 新河县| 隆德县| 那坡县| 蛟河市| 丹凤县| 贵州省| 上高县| 岐山县| 玉环县| 循化| 临泽县|