import torch
# 函数y = x**3+20*x
# 标量的梯度计算
def torch19():
x = torch.tensor(5, requires_grad=True, dtype=torch.float64) # 对于需要求导的张量设置requires_grad=True
f = x ** 3 + 20 * x
f.backward() # 自动微分
print(x.grad)
# 向量的梯度计算
def torch20():
x = torch.tensor([2, 3, 4], requires_grad=True, dtype=torch.float64)
f = x ** 3 + 20 * x
f1 = f.mean() # 自动微分必须是标量,这里是转化成标量
f1.backward()
print(x.grad)
def torch21():
x1 = torch.tensor(5, requires_grad=True, dtype=torch.float64) # 对于需要求导的张量设置requires_grad=True
x2 = torch.tensor(10, requires_grad=True, dtype=torch.float64) # 对于需要求导的张量设置requires_grad=True
f = x1 ** 3 + 20 * x2 ** 2
f.backward() # 自动微分
print(x1.grad)
print(x2.grad)
if __name__ == '__main__':
torch21()
pytorch中的自动微分
最新推荐文章于 2024-05-07 16:35:13 发布