PyTorch 導數應用的使用教程

2022-10-04 13:39:41 字數 1572 閱讀 3027

前言

由於機器學習的基本思想就是找到乙個函式去擬合樣本資料分布,因此就涉及到了梯度去求最小值,在超平面我們又很難直接得到全域性最優值,更沒有通用性,因此我們就想辦法讓梯度沿著負方向下降,那麼我們就能得到乙個區域性或全域性的最優值了,因此導數就在機器學習中顯得非常重要了

基本使用

tensor.backward()可以及自動將梯度累加積到tensor.grad上

x = torch.ones(3,3)

print(x.requires_grad)

x.requires_grad_(true)

print(x.requires_grad)

y = x**2/(x-2)

out = y.mean()

print(x.grad)

out.backward()

print(x.grad)

false

true

no程式設計客棧ne

tensor([[-0.3333, -0.3333, -0.3333],

[-0.3333, -0.3333, -0.3333],

[-0.3333, -0.3333, -0.3333]])

requires_grad可以獲取到tensor是否可導

requires_grad_()可以設定tensor是否可導

grad檢視當前tensor導數

上面的公式很簡單,程式含義

1/4 * (x**2) / (x-2)

求x的導數,基本公式在下方

注意點我們使用.mean後得到的是標量,如果不是標量會報錯

x = torch.ones(3, requires_grad=true)

y = x * 2

y = y * 2

print(y)

tensor([4., 4., 4.], grad_fn=)

y.backward()

print(x.grad)

報錯runtimeerror: grad can be implicitly created only for scalar outputs

v = torch.tensor([0.1, 1.0, 0.0001], dtype=torch.float)

y.backward()

print(x.grad)

tensor([4.00www.cppcns.com00e-01, 4.0000e+00, 4.0000e-04])

no_grad()作用域

如果想要某部分程式不可導那麼我們可以使用這個

x = torch.ones(3, requires_grad=true)

y = x 程式設計客棧* 2

print(y.requires_grad)

with torch.no_grad():

y = y * 2

print(y.requires_grad)

true

false

總結這一章我們使用pytorch裡面的backward,自動實現了函式的求導,幫助我們在後面面對很多超大參數量的函式的時候,求導就變得游刃有餘

上節pytorch使用教程-安裝與基本使用

偏導數的應用

2.幾何應用 3.多元函式極值 4.多元函式最值 5.條件極值 二元函式 設 f x,y 在 x0,y0 鄰域內具有連續偏導數,且 f x0,y0 0,fy x0,y0 0 則 f x,y 0在點 x0,y0 鄰域內可確定唯一的函式 y y x 滿足 f x,y x 0,y0 y x0 且 在求f對...

導數定義的嚴格使用

微積分 根據一點處的導數定義,是函式趨近於這個點時的函式值與這個點的函式值之差與趨近的程度之比。即 f x limx af x f a x a 舉個例子。2013.三 設曲線y f x 與y x 2 x 在點 1.0 處有公共切線,則 limn nf n n 2 分析 不難得到f 1 2x 1 x ...

MATLAB學習筆記 導數的應用1

求方程 組 的根 例1 syms x f x 2 3 x 2 solve f,x syms x y b f x 2 6 y 2 g x y b x,y solve f,g,x,y 例2 syms x f 5 sin 2 x exp x solve f,x 當不能求得符號解時,返回數值近似解代替。求函...