自动微分是深度学习中的一个核心概念,它允许我们自动计算函数的梯度,这对于优化算法来说是至关重要的。本教程将介绍如何在 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