使用Pytorch求解函数的偏微分

使用Pytorch求解函数的偏微分

import torch

'''
新建x,a,b,c变量
requires_grad=True 告诉Pytorch我们需要对a,b,c进行求导
'''

x = torch.tensor(1.) # x赋值为1
a = torch.tensor(1., requires_grad=True) # a赋值为1
b = torch.tensor(2., requires_grad=True) # b赋值为2
c = torch.tensor(3.,requires_grad=True) # c赋值为3

# 要求偏微分的函数
y = a**2 * x + b * x + c

# a.grad, b.grad, c.grad 表示a,b,c的梯度
print('before:', a.grad, b.grad, c.grad) # 求导之前a,b,c的梯度

# 通过torch 里的 autograd 里的 grad函数 求出:∂y/∂a ,∂y/∂b ,∂y/∂c
grads = torch.autograd.grad(y, (a, b, c))

# 返回值是个元祖
print(type(grads))

# grads = torch.autograd.grad(y, (a, b, c))中返回值是个 元祖 ,元祖的第一个值是:关于a的偏微分 以此类推
print('after:', grads[0], grads[1], grads[2])

你可能感兴趣的:(Pytorch,机器学习,深度学习,pytorch,人工智能,python)