pytorch中的自动微分
在 t o r c h torch torch中的 t o r c h . a u t o g r a d e torch.autograde torch.autograde模块,提供了实现任意标量值函数自动求导的类和函数针对一个张量值需要设置参数 r e q u i r e s _ g r a d = T r u e requires\_grad = True requires_grad=True,通过相关计算即可输出其在传播过程中的梯度(导数)信息。
下面使用一个示例来解释 p y t o r c h pytorch pytorch中自动微分的计算,在 p y t o r c h pytorch pytorch中生成一个矩阵张量x,并且 y = s u m ( x 2 + 2 x + 1 ) y=sum(x^2+2x+1) y=sum(x2+2x+1),计算出y在x上的导数:
import torch
# 判断函数是否可以求导
x = torch.tensor([[1.0, 2.0], [3.0, 4.0]], requires_grad=True)
y = torch.sum(x ** 2 + 2 * x + 1)
# True是可以求导,false是不可以求导
print("x.requires_grad:", x.requires_grad)
print("y.requires_grad:", y.requires_grad)
print("x", x)
print("y", y)
# 计算y在x上的梯度
# y.backward()函数可以自动计算出
# y在x的每个元素上的导数
# 然后通过x的grad属性,即可获取此时x的梯度
y.backward()
print(x.grad)