pytorch 發現反向函式中的grad variables引數是什麼意思?

時間 2021-06-03 20:19:07

1樓:蕊寒香冷蝶難來

如果反向傳播的張量y是非標量的話,該項引數需要設定乙個與y的shape相同的初值,一般可以直接設定為y.backward(torch.ones(y.

shape)),其實如果再令z=y.sum(),再直接用z.backward()也是一樣的效果。

2樓:

學到這裡我也很疑惑,於是剛寫了一篇文章:

PyTorch 的 backward 為什麼有乙個 grad_variables 引數?

3樓:

參見論壇的PyTorch回答 : Clarification - Using backward() on non-scalars

其實是反向傳播+計算圖的知識 Calculus on Computational Graphs: Backpropagation

dz/dx = dz/dy * dy/dx這裡的grad_variables 就相當於 dz/dy , 如果y是乙個向量(y的形狀和dz/dy的形狀一樣), grad_variables 就是乙個向量. 當y是乙個標量的時候, 預設為1(我們常用的損失函式就是乙個標量, 可以認為 dloss/dloss=1)

pytorch輔助損失函式反向傳播的疑問

範汝超 這算是乙個多工吧,一般情況下會設定兩個loss的比例,作為乙個超引數進行調整。按問題中直接相加就相當於1 1。拋開這個不說,如果操作得當,相加再計算梯度和分別算基本相同。為什麼說操作得當呢,因為pytorch裡面的.backward 缺省會釋放動態圖,如果你的兩個loss前向計算的動態圖裡面...

pytorch中,相同的batchsize,多GPU會比單GPU快多少?雙路能是單路的兩倍嗎?

張懷文 相同的batchsize,多gpu會不會比單卡快都是個問題。我遇到過多卡時候,每個卡頻率撞牆的問題,甚至比單卡慢。就是快的時候,也不會有N張卡,提速N倍的能力。多卡並行相關程式的開銷 多卡策略的開銷都不小。 勒布朗詹姆斯哈登 不會,pytorch有很多計算都是只在第一塊卡上進行的。而且如果雙...

pytorch 中的Dataset這個類為什麼可以呼叫 getitem ?

王小山 在DataLoder的iter中,會觸發子類Dataset中的getiterm函式讀取資料,並拼接成乙個batch返回,作為模型真正的輸入 操作符過載 如果乙個類定義了名為 getitem 的方法,x為該類的乙個例項 x i 可是為x.getitem x,i Goodbye響 我覺得題主你想...