Autograd 自動微分

2022-07-20 02:51:13 字數 2216 閱讀 4394

1、深度學習的演算法本質上是通過反向傳播求導數,pytorch的autograd模組實現了此功能;在tensor上的所有操作,autograd都能為他們自動提供微分,避免手動計算導數的複雜過程。

2、autograd.variable是autograd中的核心類,它簡單的封裝了tensor,並支援幾乎所有tensor操作;tensor被封裝為variable之後,可以呼叫它的.backward()實現反向傳播,自動計算所有的梯度。

3、variable主要包含三個屬性:

data:儲存variable所包含的tensor;

grad:儲存data對應的梯度,grad也是個variable,而不是tensor,它和data的形狀一樣;

grad_fn:指向乙個function物件,這個function用來反向傳播計算輸入的梯度。

#_author_:monkey  

#!/usr/bin/env python  

#-*- coding:utf-8 -*-  

import torch as t  

from  torch.autograd import variable  

x = variable(t.ones(2,2),requires_grad = true)  

print(x)  

'''''tensor([[1., 1.], 

[1., 1.]], requires_grad=true)'''  

y = x.sum()  

print(y)  

'''''tensor(4., grad_fn=)'''  

print(y.grad_fn)    #指向乙個function物件,這個function用來反向傳播計算輸入的梯度  

''''''''  

y.backward()  

print(x.grad)  

'''''tensor([[1., 1.], 

[1., 1.]])'''  

y.backward()  

print(x.grad)  

'''''tensor([[2., 2.], 

[2., 2.]])'''  

y.backward()  

print( x.grad )  

'''''tensor([[3., 3.], 

[3., 3.]])'''  

'''''grad在反向傳播過程中時累加的(accumulated),這意味著執行 

反向傳播,梯度都會累加之前的梯度,所以反向傳播之前需要梯度清零'''  

print( x.grad.data.zero_() )  

'''''tensor([[0., 0.], 

[0., 0.]])'''  

y.backward()  

print( x.grad )  

'''''tensor([[1., 1.], 

[1., 1.]])'''  

m = variable(t.ones(4,5))  

n = t.cos(m)  

print(m)  

print(n)  

'''''tensor([[1., 1., 1., 1., 1.], 

[1., 1., 1., 1., 1.], 

[1., 1., 1., 1., 1.], 

[1., 1., 1., 1., 1.]]) 

tensor([[0.5403, 0.5403, 0.5403, 0.5403, 0.5403], 

[0.5403, 0.5403, 0.5403, 0.5403, 0.5403], 

[0.5403, 0.5403, 0.5403, 0.5403, 0.5403], 

[0.5403, 0.5403, 0.5403, 0.5403, 0.5403]])'''  

m_tensor_cos = t.cos(m.data)  

print(m_tensor_cos)  

'''''ensor([[0.5403, 0.5403, 0.5403, 0.5403, 0.5403], 

[0.5403, 0.5403, 0.5403, 0.5403, 0.5403], 

[0.5403, 0.5403, 0.5403, 0.5403, 0.5403], 

[0.5403, 0.5403, 0.5403, 0.5403, 0.5403]])'''  

PyTorch 2 Autograd 自動微分

原文出自 在pytorch的所有神經網路中,核心是 autograd 包。讓我們先簡單介紹一下,然後我們將開始訓練我們的第乙個神經網路。autograd package 為張量上的所有操作提供自動微分 automatic differentiation 它是乙個按執行定義的框架 define by ...

Autograd 自動求導

import torch 建立張量並設定requires grad true來追蹤其計算歷史 x torch.ones 2,2,requires grad true print x tensor 1.1.1.1.requires grad true y x 2print y tensor 3.3.3...

Autograd 自動求導

import torch 建立張量並設定requires grad true來追蹤其計算歷史 x torch.ones 2,2,requires grad true print x tensor 1.1.1.1.requires grad true y x 2print y tensor 3.3.3...