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...