欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

深度学习--自动微分

程序员文章站 2022-03-01 12:57:32
...

深度学习--自动微分

例子1

import torch 
x = torch.arange(4.0)
x.requires_grad_(True)   #标记需要记录该变量的微分
y = 2*torch.dot(x,x)   #计算函数

y.backward()
print(x.grad)

首先给x分配初值[0,1,2,3],标记成需要追踪梯度的变量。计算函数y=2x⊤x 。代码y.backward()将y关于变量x的梯度存入x.grad中。

例子2

对于下述代码,z函数包含两个向量变量,分别求出z函数关于x和y的梯度。

import torch 

x = torch.arange(4.0)
y = torch.arange(10.0,14.0)
x.requires_grad_(True)
y.requires_grad_(True)   #标记成需要追踪梯度的变量

z=torch.dot(x,y)
z.backward()  #求梯度

x.grad
y.grad

输出:

tensor([10., 11., 12., 13.])
tensor([0., 1., 2., 3.])

即z关于x的梯度是y,z关于y的梯度是x。