婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > pytorch 中autograd.grad()函數(shù)的用法說明

pytorch 中autograd.grad()函數(shù)的用法說明

熱門標簽:激戰(zhàn)2地圖標注 廣告地圖標注app 白銀外呼系統(tǒng) 海南400電話如何申請 陜西金融外呼系統(tǒng) 哈爾濱ai外呼系統(tǒng)定制 騰訊外呼線路 唐山智能外呼系統(tǒng)一般多少錢 公司電話機器人

我們在用神經(jīng)網(wǎng)絡(luò)求解PDE時, 經(jīng)常要用到輸出值對輸入變量不是Weights和Biases)求導(dǎo); 在訓(xùn)練WGAN-GP 時, 也會用到網(wǎng)絡(luò)對輸入變量的求導(dǎo)。

以上兩種需求, 均可以用pytorch 中的autograd.grad() 函數(shù)實現(xiàn)。

autograd.grad(outputs, inputs, grad_outputs=None, retain_graph=None, create_graph=False, only_inputs=True, allow_unused=False)

outputs: 求導(dǎo)的因變量(需要求導(dǎo)的函數(shù))

inputs: 求導(dǎo)的自變量

grad_outputs: 如果 outputs為標量,則grad_outputs=None,也就是說,可以不用寫; 如果outputs 是向量,則此參數(shù)必須寫,不寫將會報如下錯誤:

那么此參數(shù)究竟代表著什么呢?

先假設(shè) 為一維向量, 即可設(shè)自變量因變量分別為 , 其對應(yīng)的 Jacobi 矩陣為

grad_outputs 是一個shape 與 outputs 一致的向量, 即

在給定grad_outputs 之后,真正返回的梯度為

為方便下文敘述我們引入記號

其次假設(shè) ,第i個列向量對應(yīng)的Jacobi矩陣為

此時的grad_outputs 為(維度與outputs一致)

由第一種情況, 我們有

也就是說對輸出變量的列向量求導(dǎo),再經(jīng)過權(quán)重累加。

沿用第一種情況記號

, 其中每一個 均由第一種方法得出,

即對輸入變量列向量求導(dǎo),之后按照原先順序排列即可。

retain_graph: True 則保留計算圖, False則釋放計算圖

create_graph: 若要計算高階導(dǎo)數(shù),則必須選為True

allow_unused: 允許輸入變量不進入計算

下面我們看一下具體的例子:

import torch
from torch import autograd
 
x = torch.rand(3, 4)
x.requires_grad_()

觀察 x 為

不妨設(shè) y 是 x 所有元素的和, 因為 y是標量,故計算導(dǎo)數(shù)不需要設(shè)置grad_outputs

y = torch.sum(x)
grads = autograd.grad(outputs=y, inputs=x)[0]
print(grads)

結(jié)果為

若y是向量

y = x[:,0] +x[:,1]
# 設(shè)置輸出權(quán)重為1
grad = autograd.grad(outputs=y, inputs=x, grad_outputs=torch.ones_like(y))[0]
print(grad)
# 設(shè)置輸出權(quán)重為0
grad = autograd.grad(outputs=y, inputs=x, grad_outputs=torch.zeros_like(y))[0]
print(grad)

結(jié)果為

最后, 我們通過設(shè)置 create_graph=True 來計算二階導(dǎo)數(shù)

y = x ** 2
grad = autograd.grad(outputs=y, inputs=x, grad_outputs=torch.ones_like(y), create_graph=True)[0]
grad2 = autograd.grad(outputs=grad, inputs=x, grad_outputs=torch.ones_like(grad))[0]
print(grad2)

結(jié)果為

綜上,我們便搞清楚了它的求導(dǎo)機制。

補充:pytorch學(xué)習(xí)筆記:自動微分機制(backward、torch.autograd.grad)

一、前言

神經(jīng)網(wǎng)絡(luò)通常依賴反向傳播求梯度來更新網(wǎng)絡(luò)參數(shù),求梯度過程通常是一件非常復(fù)雜而容易出錯的事情。

而深度學(xué)習(xí)框架可以幫助我們自動地完成這種求梯度運算。

Pytorch一般通過反向傳播 backward方法 實現(xiàn)這種求梯度計算。該方法求得的梯度將存在對應(yīng)自變量張量的grad屬性下。

除此之外,也能夠調(diào)用torch.autograd.grad函數(shù)來實現(xiàn)求梯度計算。

這就是Pytorch的自動微分機制。

二、利用backward方法求導(dǎo)數(shù)

backward方法通常在一個標量張量上調(diào)用,該方法求得的梯度將存在對應(yīng)自變量張量的grad屬性下。如果調(diào)用的張量非標量,則要傳入一個和它同形狀的gradient參數(shù)張量。相當于用該gradient參數(shù)張量與調(diào)用張量作向量點乘,得到的標量結(jié)果再反向傳播。

1, 標量的反向傳播

import numpy as np 
import torch 
# f(x) = a*x**2 + b*x + c的導(dǎo)數(shù)
x = torch.tensor(0.0,requires_grad = True) # x需要被求導(dǎo)
a = torch.tensor(1.0)
b = torch.tensor(-2.0)
c = torch.tensor(1.0)
y = a*torch.pow(x,2) + b*x + c 
y.backward()
dy_dx = x.grad
print(dy_dx)

輸出:

tensor(-2.)

2, 非標量的反向傳播

import numpy as np 
import torch 
# f(x) = a*x**2 + b*x + c
x = torch.tensor([[0.0,0.0],[1.0,2.0]],requires_grad = True) # x需要被求導(dǎo)
a = torch.tensor(1.0)
b = torch.tensor(-2.0)
c = torch.tensor(1.0)
y = a*torch.pow(x,2) + b*x + c 
gradient = torch.tensor([[1.0,1.0],[1.0,1.0]])
print("x:\n",x)
print("y:\n",y)
y.backward(gradient = gradient)
x_grad = x.grad
print("x_grad:\n",x_grad)

輸出:

x:

tensor([[0., 0.],

[1., 2.]], requires_grad=True)

y:

tensor([[1., 1.],

[0., 1.]], grad_fn=AddBackward0>)

x_grad:

tensor([[-2., -2.],

[ 0., 2.]])

3, 非標量的反向傳播可以用標量的反向傳播實現(xiàn)

import numpy as np 
import torch 
# f(x) = a*x**2 + b*x + c
x = torch.tensor([[0.0,0.0],[1.0,2.0]],requires_grad = True) # x需要被求導(dǎo)
a = torch.tensor(1.0)
b = torch.tensor(-2.0)
c = torch.tensor(1.0)
y = a*torch.pow(x,2) + b*x + c 
gradient = torch.tensor([[1.0,1.0],[1.0,1.0]])
z = torch.sum(y*gradient)
print("x:",x)
print("y:",y)
z.backward()
x_grad = x.grad
print("x_grad:\n",x_grad)

輸出:

x: tensor([[0., 0.],

[1., 2.]], requires_grad=True)

y: tensor([[1., 1.],

[0., 1.]], grad_fn=AddBackward0>)

x_grad:

tensor([[-2., -2.],

[ 0., 2.]])

三、利用autograd.grad方法求導(dǎo)數(shù)

import numpy as np 
import torch 
# f(x) = a*x**2 + b*x + c的導(dǎo)數(shù)
x = torch.tensor(0.0,requires_grad = True) # x需要被求導(dǎo)
a = torch.tensor(1.0)
b = torch.tensor(-2.0)
c = torch.tensor(1.0)
y = a*torch.pow(x,2) + b*x + c

# create_graph 設(shè)置為 True 將允許創(chuàng)建更高階的導(dǎo)數(shù) 
dy_dx = torch.autograd.grad(y,x,create_graph=True)[0]
print(dy_dx.data)
# 求二階導(dǎo)數(shù)
dy2_dx2 = torch.autograd.grad(dy_dx,x)[0] 
print(dy2_dx2.data)

輸出:

tensor(-2.)

tensor(2.)

import numpy as np 
import torch 
x1 = torch.tensor(1.0,requires_grad = True) # x需要被求導(dǎo)
x2 = torch.tensor(2.0,requires_grad = True)
y1 = x1*x2
y2 = x1+x2

# 允許同時對多個自變量求導(dǎo)數(shù)
(dy1_dx1,dy1_dx2) = torch.autograd.grad(outputs=y1,
                inputs = [x1,x2],retain_graph = True)
print(dy1_dx1,dy1_dx2)
# 如果有多個因變量,相當于把多個因變量的梯度結(jié)果求和
(dy12_dx1,dy12_dx2) = torch.autograd.grad(outputs=[y1,y2],
            inputs = [x1,x2])
print(dy12_dx1,dy12_dx2)

輸出:

tensor(2.) tensor(1.)

tensor(3.) tensor(2.)

四、利用自動微分和優(yōu)化器求最小值

import numpy as np 
import torch 
# f(x) = a*x**2 + b*x + c的最小值
x = torch.tensor(0.0,requires_grad = True) # x需要被求導(dǎo)
a = torch.tensor(1.0)
b = torch.tensor(-2.0)
c = torch.tensor(1.0)
optimizer = torch.optim.SGD(params=[x],lr = 0.01)

def f(x):
    result = a*torch.pow(x,2) + b*x + c 
    return(result)
for i in range(500):
    optimizer.zero_grad()
    y = f(x)
    y.backward()
    optimizer.step()   
    
print("y=",f(x).data,";","x=",x.data)

輸出:

y= tensor(0.) ; x= tensor(1.0000)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • pytorch-autograde-計算圖的特點說明
  • 淺談Pytorch中autograd的若干(踩坑)總結(jié)
  • PyTorch一小時掌握之a(chǎn)utograd機制篇

標簽:惠州 益陽 鷹潭 四川 黑龍江 黔西 上海 常德

巨人網(wǎng)絡(luò)通訊聲明:本文標題《pytorch 中autograd.grad()函數(shù)的用法說明》,本文關(guān)鍵詞  pytorch,中,autograd.grad,函數(shù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《pytorch 中autograd.grad()函數(shù)的用法說明》相關(guān)的同類信息!
  • 本頁收集關(guān)于pytorch 中autograd.grad()函數(shù)的用法說明的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲精品国产无套在线观| 在线播放中文字幕一区| 美腿丝袜亚洲综合| 亚洲福利一区二区三区| 亚洲一区二区三区四区在线免费观看 | 青青草伊人久久| 日韩高清国产一区在线| 日韩激情视频在线观看| 免费精品视频最新在线| 久久99精品久久久久久久久久久久| 蜜臀av国产精品久久久久| 美女网站视频久久| 国产精品一区专区| 不卡的av中国片| 在线精品亚洲一区二区不卡| 欧美无乱码久久久免费午夜一区| 欧美日韩一区二区在线观看视频 | 久久先锋影音av鲁色资源| 欧美色大人视频| 欧美一区中文字幕| 亚洲精品一区二区三区99| 中文字幕精品三区| 亚洲蜜桃精久久久久久久| 日韩av电影天堂| 国产福利不卡视频| 欧美优质美女网站| 91精品国产丝袜白色高跟鞋| 久久久www成人免费毛片麻豆| 日本一区二区不卡视频| 午夜欧美视频在线观看| 国产乱一区二区| 日本道色综合久久| 欧美mv和日韩mv的网站| 亚洲三级电影全部在线观看高清| 婷婷久久综合九色国产成人| 懂色av噜噜一区二区三区av| 欧美日韩免费高清一区色橹橹| 精品国产凹凸成av人导航| 亚洲精品国久久99热| 黄一区二区三区| 欧美视频一区二区在线观看| 国产色产综合产在线视频| 亚洲bt欧美bt精品777| 成人黄色av网站在线| 91精品国产入口| 亚洲精品乱码久久久久久| 狠狠色狠狠色综合系列| 欧美视频一区在线| 亚洲私人影院在线观看| 国产成人免费网站| 欧美va亚洲va香蕉在线| 亚洲成在人线在线播放| 91日韩在线专区| 久久影视一区二区| 五月天国产精品| 91黄色免费观看| 国产精品国产三级国产aⅴ原创| 欧美aⅴ一区二区三区视频| 在线免费观看不卡av| 中国av一区二区三区| 国产一区高清在线| 欧美一区二区三区成人| 五月天激情小说综合| 欧美亚洲自拍偷拍| 亚洲激情欧美激情| 色偷偷久久一区二区三区| 国产精品免费网站在线观看| 国产成人精品1024| 国产女人aaa级久久久级| 国产一区二区调教| 久久尤物电影视频在线观看| 韩国三级中文字幕hd久久精品| 在线成人午夜影院| 美女视频黄免费的久久| 日韩欧美在线123| 另类小说色综合网站| 精品国产免费久久| 国产一区二区三区久久悠悠色av | 懂色一区二区三区免费观看| 精品成人佐山爱一区二区| 国产专区欧美精品| 久久婷婷国产综合国色天香| 国产成人免费高清| 国产精品毛片a∨一区二区三区 | 亚洲欧美激情视频在线观看一区二区三区| 国产精品 日产精品 欧美精品| 国产丝袜美腿一区二区三区| 成人av在线网| 一区二区三区欧美久久| 欧美三级电影在线看| 美女视频黄 久久| 国产欧美va欧美不卡在线| 一本色道久久综合狠狠躁的推荐 | 黄色成人免费在线| 国产欧美精品区一区二区三区| 99久久精品国产毛片| 亚洲国产精品久久一线不卡| 精品伦理精品一区| www.日韩av| 日日夜夜精品视频免费| 国产亚洲一二三区| 欧美探花视频资源| 国产美女久久久久| 一区二区三区**美女毛片| 精品少妇一区二区三区| 99精品偷自拍| 日本不卡视频在线| 亚洲色大成网站www久久九九| 7777精品久久久大香线蕉| 国产成人8x视频一区二区| 亚洲午夜精品网| 欧美国产综合色视频| 欧美日韩一区三区| 成人激情综合网站| 蜜桃视频在线一区| 亚洲色图一区二区| 日本一区免费视频| 制服丝袜在线91| 一本一本大道香蕉久在线精品| 欧美bbbbb| 亚洲va欧美va人人爽午夜| 欧美韩日一区二区三区四区| 欧美一区二区精品| 色综合久久久久久久久| 国产风韵犹存在线视精品| 午夜精品在线视频一区| 亚洲日本青草视频在线怡红院| 久久免费午夜影院| 欧美一激情一区二区三区| 在线一区二区视频| 97久久超碰国产精品| 国产成人精品一区二| 精品亚洲国产成人av制服丝袜| 午夜精品久久久久影视| 中文字幕一区二区5566日韩| 26uuu国产一区二区三区| 欧美色精品天天在线观看视频| 99免费精品在线观看| 成人不卡免费av| 成人av免费在线观看| 国产精品99久久久久| 国产一区在线观看视频| 国产一区二区三区| 风间由美中文字幕在线看视频国产欧美| 久久er精品视频| 久久99久久99精品免视看婷婷| 日日欢夜夜爽一区| 首页国产欧美久久| 蜜臀av一级做a爰片久久| 日韩精品成人一区二区在线| 日本成人中文字幕| 久久精品国产99国产| 免费国产亚洲视频| 国产一区高清在线| 成人免费看片app下载| 丁香婷婷综合色啪| 99精品在线观看视频| 欧美性生活大片视频| 欧美日韩国产免费| 日韩欧美精品三级| 久久精品人人做人人综合| 国产夜色精品一区二区av| 国产精品卡一卡二| 一区二区在线看| 日韩av午夜在线观看| 国产在线麻豆精品观看| 成人一二三区视频| 一本色道a无线码一区v| 69堂亚洲精品首页| 国产欧美一区二区精品仙草咪 | 欧美一级黄色大片| 337p日本欧洲亚洲大胆精品| 国产精品久久久久精k8| 亚洲va天堂va国产va久| 国产乱码精品一区二区三区忘忧草 | 久久久亚洲高清| 亚洲四区在线观看| 免费人成网站在线观看欧美高清| 国产米奇在线777精品观看| 色屁屁一区二区| 日韩欧美亚洲国产精品字幕久久久| 中文字幕欧美日韩一区| 亚洲午夜激情av| 国产一区二区三区四区在线观看| 国产成人精品免费一区二区| 欧美日韩亚洲综合在线| 日本一区二区三区四区在线视频| 亚洲一区二区三区视频在线| 国产酒店精品激情| 欧美视频一区二区在线观看| 国产欧美精品一区二区色综合 | 亚洲欧美一区二区视频| 日韩av网站免费在线| 91麻豆免费视频| 精品国产成人系列| 日日摸夜夜添夜夜添精品视频| 不卡一区二区中文字幕| 日韩免费看的电影| 亚洲国产一区视频| hitomi一区二区三区精品|