日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python variable_PyTorch中的Variable变量详解

發布時間:2024/7/5 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python variable_PyTorch中的Variable变量详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、了解Variable

顧名思義,Variable就是 變量 的意思。實質上也就是可以變化的量,區別于int變量,它是一種可以變化的變量,這正好就符合了反向傳播,參數更新的屬性。

具體來說,在pytorch中的Variable就是一個存放會變化值的地理位置,里面的值會不停發生片花,就像一個裝雞蛋的籃子,雞蛋數會不斷發生變化。那誰是里面的雞蛋呢,自然就是pytorch中的tensor了。(也就是說,pytorch都是有tensor計算的,而tensor里面的參數都是Variable的形式)。如果用Variable計算的話,那返回的也是一個同類型的Variable。

【tensor 是一個多維矩陣】

用一個例子說明,Variable的定義:

import torch

from torch.autograd import Variable # torch 中 Variable 模塊

tensor = torch.FloatTensor([[1,2],[3,4]])

# 把雞蛋放到籃子里, requires_grad是參不參與誤差反向傳播, 要不要計算梯度

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計算時,它會逐漸地生成計算圖。這個圖就是將所有的計算節點都連接起來,最后進行誤差反向傳遞的時候,一次性將所有Variable里面的梯度都計算出來,而tensor就沒有這個能力。

v_out.backward() # 模擬 v_out 的誤差反向傳遞

print(variable.grad) # 初始 Variable 的梯度

'''

0.5000 1.0000

1.5000 2.0000

'''

三、獲取Variable里面的數據

直接print(Variable) 只會輸出Variable形式的數據,在很多時候是用不了的。所以需要轉換一下,將其變成tensor形式。

print(variable) # Variable 形式

"""

Variable containing:

1 2

3 4

[torch.FloatTensor of size 2x2]

"""

print(variable.data) # 將variable形式轉為tensor 形式

"""

1 2

3 4

[torch.FloatTensor of size 2x2]

"""

print(variable.data.numpy()) # numpy 形式

"""

[[ 1. 2.]

[ 3. 4.]]

"""

擴展

在PyTorch中計算圖的特點總結如下:

autograd根據用戶對Variable的操作來構建其計算圖。

1、requires_grad

variable默認是不需要被求導的,即requires_grad屬性默認為False,如果某一個節點的requires_grad為True,那么所有依賴它的節點requires_grad都為True。

2、volatile

variable的volatile屬性默認為False,如果某一個variable的volatile屬性被設為True,那么所有依賴它的節點volatile屬性都為True。volatile屬性為True的節點不會求導,volatile的優先級比requires_grad高。

3、retain_graph

多次反向傳播(多層監督)時,梯度是累加的。一般來說,單次反向傳播后,計算圖會free掉,也就是反向傳播的中間緩存會被清空【這就是動態度的特點】。為進行多次反向傳播需指定retain_graph=True來保存這些緩存。

4、backward()

反向傳播,求解Variable的梯度。放在中間緩存中。

以上這篇PyTorch中的Variable變量詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

總結

以上是生活随笔為你收集整理的python variable_PyTorch中的Variable变量详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。