PyTorch中Variable變量的作用是什么,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
成都網(wǎng)絡(luò)公司-成都網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司十余年經(jīng)驗(yàn)成就非凡,專業(yè)從事成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè),成都網(wǎng)頁(yè)設(shè)計(jì),成都網(wǎng)頁(yè)制作,軟文發(fā)布平臺(tái),廣告投放等。十余年來已成功提供全面的成都網(wǎng)站建設(shè)方案,打造行業(yè)特色的成都網(wǎng)站建設(shè)案例,建站熱線:028-86922220,我們期待您的來電!Variable的定義:
import torch from torch.autograd import Variable # torch 中 Variable 模塊 tensor = torch.FloatTensor([[1,2],[3,4]]) # 把雞蛋放到籃子里, requires_grad是參不參與誤差反向傳播, 要不要計(jì)算梯度 variable = Variable(tensor, requires_grad=True) print(tensor) """ 1 2 3 4 [torch.FloatTensor of size 2x2] """ print(variable) """ Variable containing: 1 2 3 4 [torch.FloatTensor of size 2x2] """
注:tensor不能反向傳播,variable可以反向傳播。
二、Variable求梯度
Variable計(jì)算時(shí),它會(huì)逐漸地生成計(jì)算圖。這個(gè)圖就是將所有的計(jì)算節(jié)點(diǎn)都連接起來,最后進(jìn)行誤差反向傳遞的時(shí)候,一次性將所有Variable里面的梯度都計(jì)算出來,而tensor就沒有這個(gè)能力。
v_out.backward() # 模擬 v_out 的誤差反向傳遞 print(variable.grad) # 初始 Variable 的梯度 ''' 0.5000 1.0000 1.5000 2.0000 '''
三、獲取Variable里面的數(shù)據(jù)
直接print(Variable) 只會(huì)輸出Variable形式的數(shù)據(jù),在很多時(shí)候是用不了的。所以需要轉(zhuǎn)換一下,將其變成tensor形式。
print(variable) # Variable 形式 """ Variable containing: 1 2 3 4 [torch.FloatTensor of size 2x2] """ print(variable.data) # 將variable形式轉(zhuǎn)為tensor 形式 """ 1 2 3 4 [torch.FloatTensor of size 2x2] """ print(variable.data.numpy()) # numpy 形式 """ [[ 1. 2.] [ 3. 4.]] """
擴(kuò)展
在PyTorch中計(jì)算圖的特點(diǎn)總結(jié)如下:
autograd根據(jù)用戶對(duì)Variable的操作來構(gòu)建其計(jì)算圖。
1、requires_grad
variable默認(rèn)是不需要被求導(dǎo)的,即requires_grad屬性默認(rèn)為False,如果某一個(gè)節(jié)點(diǎn)的requires_grad為True,那么所有依賴它的節(jié)點(diǎn)requires_grad都為True。
2、volatile
variable的volatile屬性默認(rèn)為False,如果某一個(gè)variable的volatile屬性被設(shè)為True,那么所有依賴它的節(jié)點(diǎn)volatile屬性都為True。volatile屬性為True的節(jié)點(diǎn)不會(huì)求導(dǎo),volatile的優(yōu)先級(jí)比requires_grad高。
3、retain_graph
多次反向傳播(多層監(jiān)督)時(shí),梯度是累加的。一般來說,單次反向傳播后,計(jì)算圖會(huì)free掉,也就是反向傳播的中間緩存會(huì)被清空【這就是動(dòng)態(tài)度的特點(diǎn)】。為進(jìn)行多次反向傳播需指定retain_graph=True來保存這些緩存。
4、backward()
反向傳播,求解Variable的梯度。放在中間緩存中。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司的支持。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計(jì)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。