Python 第三方库:PyTorch(动态计算图的深度学习框架)
PyTorch 是由 Facebook AI Research(FAIR)团队于 2016 年开源的深度学习框架。
它以动态图(Dynamic Computation Graph)、易用性和科研友好性著称,广泛应用于学术研究和工业界的深度学习任务。
PyTorch 提供了与 NumPy 类似的张量操作接口,同时具备自动求导功能,支持 GPU 加速,并能与 Python 生态(NumPy、SciPy、scikit-learn 等)紧密结合。
安装:CPU 版本
pip install torch torchvision torchaudioGPU 版本(需 CUDA 环境):
官方推荐使用官网安装指令生成器:PyTorch Get Started。
示例(CUDA 11.8):
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118常见应用场景:
(1)学术研究:灵活的动态图机制适合快速试验新模型。
(2)计算机视觉:通过 torchvision 提供丰富的数据集与预训练模型。
(3)自然语言处理:HuggingFace Transformers 等主流 NLP 库均基于 PyTorch。
(4)强化学习:易于构建复杂的交互式训练流程。
(5)工业部署:通过 TorchScript、ONNX、LibTorch 可扩展到生产环境。
◆ ◆ ◆
核心概念
1、张量(Tensor)
PyTorch 的核心数据结构,类似 NumPy 数组,但支持 GPU 加速。
2、动态计算图(Define-by-Run)
与 TensorFlow 1.x 的静态图不同,PyTorch 在运行时构建计算图,更加直观灵活。
3、自动求导(Autograd)
torch.autograd 自动追踪张量操作,支持梯度反向传播。
4、模块化神经网络(torch.nn)
提供丰富的层、损失函数和优化器,便于快速构建复杂模型。
5、数据加载(torch.utils.data)
提供 Dataset 和 DataLoader 抽象,支持批处理、打乱和并行加载。
6、部署支持
TorchScript:将动态图转换为可优化的静态图。
ONNX:跨框架导出与部署。
◆ ◆ ◆
应用举例
例 1:张量运算
import torch
x = torch.tensor([[1, 2], [3, 4]], dtype=torch.float32)y = torch.tensor([[5, 6], [7, 8]], dtype=torch.float32)
print(torch.matmul(x, y)) # 矩阵乘法例 2:自动求导
import torch
x = torch.ones(2, 2, requires_grad=True)y = x + 2z = y * y * 3out = z.mean()
out.backward() # 反向传播print(x.grad) # 梯度例 3:定义神经网络
import torchimport torch.nn as nnimport torch.nn.functional as F
class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(784, 128) self.fc2 = nn.Linear(128, 10)def forward(self, x): x = F.relu(self.fc1(x)) return self.fc2(x)
net = Net()print(net)例 4:训练循环(以 MNIST 为例)
import torchimport torch.nn as nnimport torch.optim as optimfrom torchvision import datasets, transforms
# 数据预处理transform = transforms.Compose([transforms.ToTensor()])
train_loader = torch.utils.data.DataLoader( datasets.MNIST('.', train=True, download=True, transform=transform), batch_size=64, shuffle=True)
# 模型与优化器model = Net()optimizer = optim.Adam(model.parameters(), lr=0.001)criterion = nn.CrossEntropyLoss()
# 训练一个 epochfor data, target in train_loader: optimizer.zero_grad() output = model(data.view(-1, 784)) loss = criterion(output, target) loss.backward() optimizer.step()
print("训练完成")例 5:保存与加载模型
# 保存参数torch.save(model.state_dict(), "model.pth")
# 加载参数new_model = Net()new_model.load_state_dict(torch.load("model.pth"))new_model.eval()例 6:GPU 加速
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")model.to(device)◆ ◆ ◆
常用模块速览
torch.Tensor
张量数据结构。
torch.autograd
自动求导系统。
torch.nn
神经网络模块。
torch.optim
优化器(SGD、Adam 等)。
torchvision
计算机视觉工具包。
torch.utils.data
数据加载工具。
torch.jit
TorchScript(部署)。
torch.onnx
ONNX 导出。
📘 小结
PyTorch 是动态计算图驱动的深度学习框架,以灵活性和易用性著称。
它不仅在学术研究中占据主导地位,也通过 TorchScript、ONNX 等工具进入工业部署领域。
凭借强大的生态系统(如 torchvision、HuggingFace Transformers、PyTorch Lightning),PyTorch 已成为科研与工程并重的主流 AI 框架。

“点赞有美意,赞赏是鼓励”
