亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Variable怎么在Pytorch中使用

發布時間:2021-01-06 16:01:34 來源:億速云 閱讀:176 作者:Leah 欄目:開發技術

Variable怎么在Pytorch中使用?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

1.簡介

torch.autograd.Variable是Autograd的核心類,它封裝了Tensor,并整合了反向傳播的相關實現

Variable和tensor的區別和聯系

Variable是籃子,而tensor是雞蛋,雞蛋應該放在籃子里才能方便拿走(定義variable時一個參數就是tensor)

Variable這個籃子里除了裝了tensor外還有requires_grad參數,表示是否需要對其求導,默認為False

Variable這個籃子呢,自身有一些屬性

比如grad,梯度variable.grad是d(y)/d(variable)保存的是變量y對variable變量的梯度值,如果requires_grad參數為False,所以variable.grad返回值為None,如果為True,返回值就為對variable的梯度值

比如grad_fn,對于用戶自己創建的變量(Variable())grad_fn是為none的,也就是不能調用backward函數,但對于由計算生成的變量,如果存在一個生成中間變量的requires_grad為true,那其的grad_fn不為none,反則為none

比如data,這個就很簡單,這個屬性就是裝的雞蛋(tensor)

Varibale包含三個屬性:

data:存儲了Tensor,是本體的數據 grad:保存了data的梯度,本事是個Variable而非Tensor,與data形狀一致 grad_fn:指向Function對象,用于反向傳播的梯度計算之用

代碼1

import numpy as np
import torch
from torch.autograd import Variable
 
x = Variable(torch.ones(2,2),requires_grad = False)
temp = Variable(torch.zeros(2,2),requires_grad = True)
 
y = x + temp + 2
y = y.mean() #求平均數
 
y.backward() #反向傳遞函數,用于求y對前面的變量(x)的梯度
print(x.grad) # d(y)/d(x)

輸出1

none

(因為requires_grad=False)

代碼2

import numpy as np
import torch
from torch.autograd import Variable
 
x = Variable(torch.ones(2,2),requires_grad = False)
temp = Variable(torch.zeros(2,2),requires_grad = True)
 
 
y = x + temp + 2
y = y.mean() #求平均數
 
y.backward() #反向傳遞函數,用于求y對前面的變量(x)的梯度
print(temp.grad) # d(y)/d(temp)

輸出2

tensor([[0.2500, 0.2500],
[0.2500, 0.2500]])

代碼3

import numpy as np
import torch
from torch.autograd import Variable
 
x = Variable(torch.ones(2,2),requires_grad = False)
temp = Variable(torch.zeros(2,2),requires_grad = True)
 
 
y = x + 2
y = y.mean() #求平均數
 
y.backward() #反向傳遞函數,用于求y對前面的變量(x)的梯度
print(x.grad) # d(y)/d(x)

輸出3

Traceback (most recent call last):
File "path", line 12, in <module>
y.backward()

(報錯了,因為生成變量y的中間變量只有x,而x的requires_grad是False,所以y的grad_fn是none)

代碼4

import numpy as np
import torch
from torch.autograd import Variable
 
x = Variable(torch.ones(2,2),requires_grad = False)
temp = Variable(torch.zeros(2,2),requires_grad = True)
 
 
y = x + 2
y = y.mean() #求平均數
 
#y.backward() #反向傳遞函數,用于求y對前面的變量(x)的梯度
print(y.grad_fn) # d(y)/d(x)

輸出4

none

2.grad屬性

在每次backward后,grad值是會累加的,所以利用BP算法,每次迭代是需要將grad清零的。

x.grad.data.zero_()

(in-place操作需要加上_,即zero_)

看完上述內容,你們掌握Variable怎么在Pytorch中使用的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

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

AI

海宁市| 潮安县| 红桥区| 宝山区| 微山县| 如东县| 张家口市| 五家渠市| 凤山市| 红安县| 阳曲县| 沂南县| 宜宾县| 通化县| 镇雄县| 金秀| 含山县| 滨州市| 云安县| 古蔺县| 江西省| 柳江县| 晋宁县| 娄烦县| 邳州市| 景德镇市| 盘山县| 东明县| 福清市| 兴国县| 合川市| 山东省| 海伦市| 通化县| 石泉县| 板桥市| 梁河县| 榕江县| 鹤岗市| 伽师县| 连云港市|