2 5 3 PyTorch中的標量反向傳播

2021-10-13 20:15:15 字數 2081 閱讀 4552

假設x,w,b都是標量,z=wx+b,對標量z呼叫backward()方法,按照前面所說,我們無需對backward()傳入引數。下面我們用**來實現自動求導的主要步驟:

import torch

# 1、定義葉子節點與運算元節點

# 定義輸入張量x

x = torch.tensor([2

])# 初始化權重引數w和偏移量b,並設定requires_grad屬性為true,為自動求導

w = torch.randn(

1, requires_grad=

true

)b = torch.randn(

1, requires_grad=

true

)# 實現前向傳播

y = torch.mul(w, x)

z = torch.add(y, b)

# 檢視x,w,b的requires_grad屬性

print

("x,w,b葉子節點的requires_grad屬性:{},{},{}"

.format

(x.requires_grad, w.requires_grad, b.requires_grad)

)# 2、檢視葉子節點、非葉子節點的其他屬性

# 檢視非葉子節點的requires_grad屬性

# 因為與w,b有依賴關係,故y和z的屬性是:true,true

print

("y,z非葉子節點的requires_grad屬性:{},{}"

.format

(y.requires_grad, z.requires_grad)

)# 檢視各節點是否為葉子節點

print

("x,w,b,y,z是否為葉子節點:{},{},{},{},{}"

.format

(x.is_leaf, w.is_leaf, b.is_leaf,

y.is_leaf, z.is_leaf)

)# 檢視葉子節點的grad_fn值

print

("x,w,n的grad_fn屬性:{},{},{}"

.format

(x.grad_fn, w.grad_fn, b.grad_fn)

)# 因為x,w,b為使用者建立的,為通過其他張量計算得到的,故x,w,b的grad_fn屬性:none,none,none

# 檢視非葉子節點的grad_fn屬性

print

("y,z非葉子節點的grad_fn屬性:{},{}"

.format

(y.grad_fn, z.grad_fn)

)# 3、自動求導,實現梯度方向傳播,即梯度的反向傳播

# 基於z張量進行梯度反向傳播,執行backward之後計算圖會自動清空

z.backward(

)# 如果需要多次使用backward,需要修改引數retain_graph為true

# z.backward(retain_graph=true)

# 檢視葉子節點的梯度,x是葉子節點但它無須求導,故其梯度為none

print

("引數x,w,b的梯度分別為:{},{},{}"

.format

(x.grad, w.grad, b.grad)

)# 非葉子節點的梯度,執行backward之後,會自動清空

print

("非葉子節點y,z的梯度分別為:{},{}"

.format

(y.grad, z.grad)

)結果輸出:

x,w,b葉子節點的requires_grad屬性:false,true,true

y,z非葉子節點的requires_grad屬性:true,true

x,w,b,y,z是否為葉子節點:true,true,true,false,false

x,w,n的grad_fn屬性:none,none,none

y,z非葉子節點的grad_fn屬性:>

,>

引數x,w,b的梯度分別為:none,tensor([2

.]),tensor([1

.])非葉子節點y,z的梯度分別為:none,none

2 5 3 愛情中的那些「男女有別」

上一章,我們了解到人與人之間的愛情,不僅需要相似的個性,互補的需求,同時,我們還要 意中人的自尊,用恰當的讚美開啟對方的心門。但僅了解上述的技巧還是不夠的。通往愛情的路途依舊遙遠,作者總結出來的讓人墮入情網的要素還有三點。今天,我們就來共同了解什麼是等價原則,以及那些戀愛初期的攻心策略。2 等價原則...

Pytorch 中 torchvision的錯誤

在學習pytorch的時候,使用 torchvision的時候發生了乙個小小的問題 安裝都成功了,並且import torch也沒問題,但是在import torchvision的時候,出現了如下所示的錯誤資訊 dll load failed 找不到指定模組。首先,我們得知道torchvision在...

pytorch中的乘法

總結 按元素相乘用torch.mul,二維矩陣乘法用torch.mm,batch二維矩陣用torch.bmm,batch 廣播用torch.matmul if name main a torch.tensor 1 2,3 b torch.arange 0,12 reshape 4 3 c torch...