Pytorch 函式的手動梯度計算方法

2021-10-08 02:43:42 字數 1222 閱讀 5551

y (z

)=x2

ex,.

y(z) = x^e^,.

y(z)=x

2ex,.y′

=2xe

x+x2

ex,.

y^= 2xe^+x^e^,.

y′=2xe

x+x2

ex,.

一般可以手動計算出導數的可導函式,可以手動求導。

學習torch,掌握tensor,autograd,variable,nn,nn.module,loss,optim,dataset是關鍵。自動微分是深度學習得以實現的關鍵。下面將模擬實現函式的求導功能。

定義函式;

定義導函式。

import torch as t

from torch.autograd import variable as v

deffn

(x):

y = x**

2*t.exp(x)

return y

defgrad_fn

(x):

"""手動求導"""

dx =

2*x*t.exp(x)

+ x**

2*t.exp(x)

return dx

# 測試

x = v(t.randn(3,

4),requires_grad=

true

)y = fn(x)

# 輸出求導結果

print

(grad_fn(x)

)"""

tensor([[ 0.1414, 0.1452, 11.5258, -0.2398],

[ 1.0525, 10.6380, 3.0432, -0.3667],

[-0.3050, -0.0358, -0.3827, -0.4155]], grad_fn=)

"""# torch.autograd自動求導時,執行

y.backward(t.ones(y.size())

)print

(x.grad)

"""tensor([[ 0.1414, 0.1452, 11.5258, -0.2398],

[ 1.0525, 10.6380, 3.0432, -0.3667],

[-0.3050, -0.0358, -0.3827, -0.4155]])

"""

理解pytorch中的梯度

粗淺理解就是,只有變數才有梯度,因為梯度是求導得來的嘛 created on tue jan 12 16 41 46 2021 認識pytorch中的梯度 author user import torch from torch.autograd import variable x11 torch.t...

Pytorch中的梯度下降及優化

在pytorch中使用mini batch這種方法進行訓練 對整個訓練集進行梯度下降法的時候,我們必須處理整個訓練資料集,然後才能進行一步梯度下降,即每一步梯度下降法需要對整個訓練集進行一次處理,如果訓練資料集很大的時候處理速度會很慢,而且也不可能一次的載入到記憶體或者視訊記憶體中 所以我們會把大資...

pytorch中的gather函式

from 今天剛開始接觸,讀了一下documentation,寫乙個一開始每太搞懂的函式gather b torch.tensor 1,2,3 4,5,6 print bindex 1 torch.longtensor 0,1 2,0 index 2 torch.longtensor 0,1,1 0...