PyTorch 2.5 API全解析:中文文档+代码示例,小白也能轻松看懂

发布时间:2026/5/17 5:05:04

PyTorch 2.5 API全解析:中文文档+代码示例,小白也能轻松看懂 PyTorch 2.5 API全解析中文文档代码示例小白也能轻松看懂1. PyTorch 2.5简介与安装PyTorch是目前最受欢迎的深度学习框架之一最新发布的2.5版本带来了多项性能优化和新特性。作为一个开源的Python机器学习库PyTorch基于Torch库开发底层由C实现广泛应用于计算机视觉、自然语言处理等AI领域。1.1 为什么选择PyTorch动态计算图相比静态图框架PyTorch的动态图机制让调试更直观Python原生风格代码写法更符合Python习惯学习曲线平缓丰富的生态系统TorchVision、TorchText等配套工具完善强大的GPU加速CUDA支持让计算速度大幅提升1.2 快速安装PyTorch 2.5# 使用pip安装CPU版本 pip install torch2.5.0 # 安装GPU版本(CUDA 12.1) pip install torch2.5.0 torchvision0.16.0 torchaudio0.15.0 --index-url https://download.pytorch.org/whl/cu121安装完成后可以通过以下代码验证安装是否成功import torch print(torch.__version__) # 应该输出2.5.0 print(torch.cuda.is_available()) # 检查GPU是否可用2. 张量基础操作张量(Tensor)是PyTorch中最基本的数据结构可以看作是多维数组。理解张量操作是使用PyTorch的第一步。2.1 创建张量的多种方式import torch # 从Python列表创建 data torch.tensor([[1, 2], [3, 4]]) print(data) # 创建全零张量 zeros torch.zeros(2, 3) # 2行3列 print(zeros) # 创建随机张量 rand_tensor torch.rand(3, 3) # 3x3的随机值(0-1之间) print(rand_tensor) # 创建等差序列 arange torch.arange(0, 10, 2) # 0到10步长2 print(arange) # 输出: tensor([0, 2, 4, 6, 8])2.2 张量的基本属性每个张量都有三个关键属性x torch.rand(2, 3) print(x.shape) # 形状: torch.Size([2, 3]) print(x.dtype) # 数据类型: torch.float32 print(x.device) # 存储设备: cpu或cuda2.3 张量的形状操作x torch.arange(6) # tensor([0, 1, 2, 3, 4, 5]) # 改变形状 y x.view(2, 3) # 变为2行3列 print(y) # 转置操作 z y.t() # 变为3行2列 print(z) # 增加/减少维度 w x.unsqueeze(0) # 在第0维增加1个维度 print(w.shape) # torch.Size([1, 6]) v w.squeeze(0) # 去掉第0维 print(v.shape) # torch.Size([6])3. 自动微分与梯度计算PyTorch的自动微分系统(Autograd)是其核心特性之一让我们能够轻松计算梯度。3.1 基本梯度计算# 创建一个需要计算梯度的张量 x torch.tensor(2.0, requires_gradTrue) # 定义一个计算图 y x ** 2 3 * x 1 # 计算梯度 y.backward() # 查看x的梯度 print(x.grad) # 输出: tensor(7.) # 因为dy/dx 2x 3 2*2 3 73.2 实际应用示例假设我们要拟合一个简单的线性模型# 准备数据 x_data torch.tensor([[1.0], [2.0], [3.0]]) y_data torch.tensor([[2.0], [4.0], [6.0]]) # 定义模型参数 w torch.tensor([[1.0]], requires_gradTrue) b torch.tensor([[0.0]], requires_gradTrue) # 训练循环 learning_rate 0.01 for epoch in range(100): # 前向传播 y_pred x_data w b # 计算损失 loss ((y_pred - y_data) ** 2).mean() # 反向传播 loss.backward() # 更新参数(不追踪梯度) with torch.no_grad(): w - learning_rate * w.grad b - learning_rate * b.grad # 清零梯度 w.grad.zero_() b.grad.zero_() print(f训练后的参数: w{w.item()}, b{b.item()})4. 神经网络构建PyTorch提供了torch.nn模块来简化神经网络的构建过程。4.1 构建一个简单的全连接网络import torch.nn as nn import 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) # 隐藏层到输出层 self.dropout nn.Dropout(0.2) # Dropout层 def forward(self, x): x x.view(-1, 784) # 展平输入 x F.relu(self.fc1(x)) x self.dropout(x) x self.fc2(x) return F.log_softmax(x, dim1) # 实例化网络 model Net() print(model)4.2 卷积神经网络示例class CNN(nn.Module): def __init__(self): super(CNN, self).__init__() self.conv1 nn.Conv2d(1, 32, 3, 1) # 输入通道1输出通道323x3卷积核 self.conv2 nn.Conv2d(32, 64, 3, 1) self.dropout1 nn.Dropout(0.25) self.dropout2 nn.Dropout(0.5) self.fc1 nn.Linear(9216, 128) self.fc2 nn.Linear(128, 10) def forward(self, x): x self.conv1(x) x F.relu(x) x self.conv2(x) x F.relu(x) x F.max_pool2d(x, 2) x self.dropout1(x) x torch.flatten(x, 1) x self.fc1(x) x F.relu(x) x self.dropout2(x) x self.fc2(x) return F.log_softmax(x, dim1)5. 模型训练与评估5.1 数据准备与加载from torch.utils.data import DataLoader, TensorDataset from torchvision import datasets, transforms # 数据转换 transform transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) # 加载MNIST数据集 train_dataset datasets.MNIST(./data, trainTrue, downloadTrue, transformtransform) test_dataset datasets.MNIST(./data, trainFalse, transformtransform) # 创建数据加载器 train_loader DataLoader(train_dataset, batch_size64, shuffleTrue) test_loader DataLoader(test_dataset, batch_size1000, shuffleFalse)5.2 训练循环def train(model, device, train_loader, optimizer, epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target data.to(device), target.to(device) optimizer.zero_grad() output model(data) loss F.nll_loss(output, target) loss.backward() optimizer.step() if batch_idx % 100 0: print(fTrain Epoch: {epoch} [{batch_idx * len(data)}/{len(train_loader.dataset)} f({100. * batch_idx / len(train_loader):.0f}%)]\tLoss: {loss.item():.6f}) def test(model, device, test_loader): model.eval() test_loss 0 correct 0 with torch.no_grad(): for data, target in test_loader: data, target data.to(device), target.to(device) output model(data) test_loss F.nll_loss(output, target, reductionsum).item() pred output.argmax(dim1, keepdimTrue) correct pred.eq(target.view_as(pred)).sum().item() test_loss / len(test_loader.dataset) print(f\nTest set: Average loss: {test_loss:.4f}, fAccuracy: {correct}/{len(test_loader.dataset)} f({100. * correct / len(test_loader.dataset):.0f}%)\n) # 使用GPU如果可用 device torch.device(cuda if torch.cuda.is_available() else cpu) model Net().to(device) optimizer torch.optim.Adam(model.parameters(), lr0.001) # 训练5个epoch for epoch in range(1, 6): train(model, device, train_loader, optimizer, epoch) test(model, device, test_loader)6. 模型保存与加载训练好的模型可以保存下来供以后使用。6.1 保存和加载模型# 保存模型 torch.save(model.state_dict(), mnist_model.pth) # 加载模型 loaded_model Net().to(device) loaded_model.load_state_dict(torch.load(mnist_model.pth)) loaded_model.eval()6.2 保存整个模型# 保存整个模型(包括结构) torch.save(model, mnist_full_model.pth) # 加载整个模型 loaded_full_model torch.load(mnist_full_model.pth) loaded_full_model.eval()7. 实用技巧与最佳实践7.1 使用GPU加速# 检查GPU是否可用 device torch.device(cuda:0 if torch.cuda.is_available() else cpu) # 将模型和数据移动到GPU model model.to(device) data data.to(device)7.2 混合精度训练from torch.cuda.amp import autocast, GradScaler scaler GradScaler() for data, target in train_loader: data, target data.to(device), target.to(device) optimizer.zero_grad() with autocast(): output model(data) loss F.nll_loss(output, target) scaler.scale(loss).backward() scaler.step(optimizer) scaler.update()7.3 梯度裁剪torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm1.0)8. 总结通过本文我们系统地介绍了PyTorch 2.5的核心API和使用方法张量操作创建、变形和运算的基础自动微分理解PyTorch的梯度计算机制神经网络构建使用nn.Module创建自定义模型训练流程数据加载、训练循环和评估模型保存持久化训练好的模型实用技巧GPU加速、混合精度等高级功能PyTorch的设计哲学是保持灵活性和易用性的平衡这使得它成为研究和生产中的首选框架。随着2.5版本的发布PyTorch在性能和功能上都有了显著提升。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关新闻