自动微分是深度学习中的一个核心概念,它允许我们自动计算函数的梯度,这对于优化算法来说是至关重要的。本教程将介绍如何在 PyTorch 中使用自动微分。
1. 什么是自动微分?
自动微分是一种计算函数梯度的方法,它可以在不显式编写求导代码的情况下,自动从正向计算中获取梯度。
2. PyTorch 中的自动微分
PyTorch 提供了自动微分的功能,使得计算梯度变得非常简单。
2.1 使用 .backward()
方法
在 PyTorch 中,你可以使用 .backward()
方法来计算梯度。以下是一个简单的例子:
import torch
# 创建一个张量
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
# 定义一个函数
y = x ** 2
# 计算梯度
y.backward(torch.tensor([1.0, 1.0, 1.0]))
# 输出梯度
print(x.grad)
2.2 使用 autograd
模块
PyTorch 的 autograd
模块提供了更高级的自动微分功能。
import torch
import torch.nn as nn
import torch.optim as optim
# 定义一个简单的神经网络
model = nn.Linear(2, 1)
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
# 输入数据
x = torch.tensor([[1.0, 2.0], [2.0, 3.0]], requires_grad=True)
y = torch.tensor([[1.0], [2.0]])
# 训练模型
for _ in range(100):
optimizer.zero_grad()
output = model(x)
loss = criterion(output, y)
loss.backward()
optimizer.step()
3. 扩展阅读
想要了解更多关于 PyTorch 的内容,可以访问我们的官方文档:PyTorch 官方文档
PyTorch Logo