# 使用pytorch的自动微分实现函数f(x)=x^2+y^2极小值的梯度下降算法
import torch
def f(x, y):
return x ** 2 + y ** 2
x = torch.tensor([1.1], requires_grad=True)
y = torch.tensor([2.1], requires_grad=True)
n = 100
alpha = 0.05
for i in range(1, n + 1):
z = f(x, y)
z.backward()
x.data -= alpha * x.grad.data
y.data -= alpha * y.grad.data
x.grad.zero_()
y.grad.zero_()
print(f"循环次数{i}",
f"自变量x的值{x.item():.3f}",
f"自变量y的值{y.item():.3f}",
f"函数值{z.item():.3f}")
# x.item() 和 y.item() 方法被用来从 PyTorch 张量(tensors)中提取原始的数值数据。
# 当您对一个张量调用 .item() 方法时,它会将这个张量转换成一个 Python 原生数组
Pytorch的自动微分---自动微分实现梯度下降
最新推荐文章于 2024-08-18 19:53:43 发布