PyTorch自动求导与优化器使用教程
PyTorch自动求导与优化器使用教程
本教程将带你学习如何使用PyTorch进行自动求导以及如何使用优化器更新参数。
**代码示例:**pythonimport torchimport torch.optim as optim
创建需要求导的张量x = torch.tensor(2.0, requires_grad=True)y = torch.tensor(3.0, requires_grad=True)
定义一个函数def func(x, y): return 3 * x ** 2 + 2 * y + 1
计算函数的值z = func(x, y)
自动求导z.backward()
打印导数值print('dz/dx:', x.grad)print('dz/dy:', y.grad)
创建优化器optimizer = optim.SGD([x, y], lr=0.1)
更新参数optimizer.step()
清空梯度optimizer.zero_grad()
打印更新后的参数值print('Updated x:', x)print('Updated y:', y)
代码解读:
-
创建需要求导的张量: -
x = torch.tensor(2.0, requires_grad=True)创建一个值为2.0的张量x,并设置requires_grad=True表示需要计算其梯度。 - 同理,创建了需要计算梯度的张量y。 -
定义函数: -
def func(x, y): ...定义了一个函数func(x, y),该函数接受两个张量作为输入并返回一个计算结果。 -
计算函数值: -
z = func(x, y)计算函数func(x, y)在x和y处的值,并将结果存储在变量z中。 -
自动求导: -
z.backward()对z进行自动求导。PyTorch会自动追踪计算图,并计算所有需要求导的张量的梯度。 -
打印导数值: -
print('dz/dx:', x.grad)打印x的梯度,即dz/dx的值。 - 同理,打印y的梯度dz/dy的值。 -
创建优化器: -
optimizer = optim.SGD([x, y], lr=0.1)创建一个随机梯度下降(SGD)优化器,将需要更新的参数x和y传递给优化器,并设置学习率为0.1。 -
更新参数: -
optimizer.step()使用优化器更新参数x和y的值,使得函数值z向梯度下降的方向移动。 -
清空梯度: -
optimizer.zero_grad()清空之前计算的梯度值,为下一次迭代做准备。 -
打印更新后的参数值: -
print('Updated x:', x)打印更新后的x的值。 - 同理,打印更新后的y的值。
总结:
本教程介绍了使用PyTorch进行自动求导和使用优化器更新参数的基本步骤。通过学习本教程,你应该能够理解PyTorch中自动求导和优化器的工作原理,并能够在自己的代码中使用它们。
原文地址: https://www.cveoy.top/t/topic/RId 著作权归作者所有。请勿转载和采集!