Skip to content

深度学习框架入门

主流框架概览

深度学习框架提供了构建、训练和部署神经网络所需的基础设施,极大降低了开发门槛。目前主流的框架包括:

框架开发方特点
PyTorchMeta动态计算图,灵活易用,研究社区首选
TensorFlowGoogle生态完善,工业部署成熟
JAXGoogle函数式风格,自动微分高效,研究领域兴起
PaddlePaddle百度国产框架,中文文档完善

PyTorch 快速上手

PyTorch 以其动态计算图和 Pythonic 的编程风格,成为目前最受欢迎的深度学习框架。下面是一个简单的入门示例。

张量(Tensor)

张量是 PyTorch 的核心数据结构,类似于 NumPy 的数组,但支持 GPU 加速和自动微分。

python
import torch

# 创建张量
x = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
print(x)

# 在 GPU 上运行(如果可用)
if torch.cuda.is_available():
    x = x.cuda()

自动微分(Autograd)

PyTorch 的自动微分机制能够自动计算梯度,这是训练神经网络的基础。

python
x = torch.tensor(2.0, requires_grad=True)
y = x ** 2
y.backward()
print(x.grad)  # 输出 4.0,即 dy/dx = 2x = 4

构建神经网络

使用 torch.nn 模块可以方便地定义神经网络:

python
import torch.nn as nn

class SimpleNet(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc1 = nn.Linear(784, 128)
        self.fc2 = nn.Linear(128, 10)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        return self.fc2(x)

训练循环

一个典型的训练循环包含前向传播、计算损失、反向传播和参数更新四个步骤:

python
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
criterion = nn.CrossEntropyLoss()

for data, target in dataloader:
    optimizer.zero_grad()          # 清零梯度
    output = model(data)           # 前向传播
    loss = criterion(output, target)  # 计算损失
    loss.backward()                # 反向传播
    optimizer.step()               # 更新参数

框架的选择建议

  • 研究与实验:优先选择 PyTorch,灵活且社区活跃。
  • 工业部署:可结合 TensorFlow Serving 或 ONNX 进行模型部署。
  • 入门学习:从 PyTorch 开始,文档和教程资源丰富。
  • 国产化需求:可考虑 PaddlePaddle,中文生态完善。

学习资源推荐

  • 官方文档:各框架的官方文档是最权威的学习资料。
  • 在线课程:深度学习专项课程(如吴恩达、李沐的课程)。
  • 开源项目:阅读优秀的开源项目代码是提升实践能力的有效途径。
  • 竞赛平台:通过 Kaggle 等平台参与实战项目。

分享人工智能、机器学习与大模型的学习笔记