尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

PyTorch-2.x-Universal-Dev-v1.0入门实战:10分钟跑通你的第一个深度学习项目

PyTorch-2.x-Universal-Dev-v1.0入门实战:10分钟跑通你的第一个深度学习项目 PyTorch-2.x-Universal-Dev-v1.0入门实战10分钟跑通你的第一个深度学习项目1. 环境准备与快速部署1.1 镜像特点介绍PyTorch-2.x-Universal-Dev-v1.0是一个专为深度学习开发者设计的预配置环境具有以下优势开箱即用预装PyTorch 2.x、CUDA 11.8/12.1驱动和常用Python库优化配置已配置阿里/清华镜像源加速国内下载速度轻量化去除冗余缓存镜像体积更小多工具集成包含JupyterLab、Matplotlib等开发工具1.2 快速启动容器使用Docker快速启动环境docker run -it --gpus all -p 8888:8888 -v $(pwd):/workspace pytorch-2.x-universal-dev:1.0启动后会自动进入Bash终端可以立即开始工作。2. 验证环境与GPU支持2.1 检查GPU状态在终端中输入以下命令验证GPU是否可用nvidia-smi正常情况会显示GPU信息类似这样----------------------------------------------------------------------------- | NVIDIA-SMI 525.85.12 Driver Version: 525.85.12 CUDA Version: 12.0 | |--------------------------------------------------------------------------- | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | || | 0 NVIDIA GeForce ... On | 00000000:01:00.0 Off | N/A | | N/A 45C P8 10W / N/A | 100MiB / 8192MiB | 0% Default | | | | N/A | ---------------------------------------------------------------------------2.2 验证PyTorch CUDA支持在Python环境中运行以下代码import torch print(fPyTorch版本: {torch.__version__}) print(fCUDA可用: {torch.cuda.is_available()}) print(f当前GPU: {torch.cuda.get_device_name(0)})正确输出应显示CUDA可用和GPU型号信息。3. 第一个深度学习项目实战3.1 准备MNIST手写数字数据集我们将使用经典的MNIST数据集进行手写数字识别import torch from torchvision import datasets, transforms # 数据预处理 transform transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) # 下载数据集 train_dataset datasets.MNIST(./data, trainTrue, downloadTrue, transformtransform) test_dataset datasets.MNIST(./data, trainFalse, transformtransform) # 创建数据加载器 train_loader torch.utils.data.DataLoader(train_dataset, batch_size64, shuffleTrue) test_loader torch.utils.data.DataLoader(test_dataset, batch_size1000, shuffleTrue)3.2 构建简单神经网络模型创建一个简单的卷积神经网络import torch.nn as nn import torch.nn.functional as F class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 nn.Conv2d(1, 10, kernel_size5) self.conv2 nn.Conv2d(10, 20, kernel_size5) self.fc1 nn.Linear(320, 50) self.fc2 nn.Linear(50, 10) def forward(self, x): x F.relu(F.max_pool2d(self.conv1(x), 2)) x F.relu(F.max_pool2d(self.conv2(x), 2)) x x.view(-1, 320) x F.relu(self.fc1(x)) x self.fc2(x) return F.log_softmax(x, dim1) model Net().to(cuda)3.3 设置优化器和损失函数optimizer torch.optim.Adam(model.parameters(), lr0.001) criterion nn.CrossEntropyLoss()3.4 训练模型编写训练循环def train(epoch): model.train() for batch_idx, (data, target) in enumerate(train_loader): data, target data.to(cuda), target.to(cuda) optimizer.zero_grad() output model(data) loss criterion(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.eval() test_loss 0 correct 0 with torch.no_grad(): for data, target in test_loader: data, target data.to(cuda), target.to(cuda) output model(data) test_loss criterion(output, target).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}, Accuracy: {correct}/{len(test_loader.dataset)} f({100. * correct / len(test_loader.dataset):.0f}%)\n) for epoch in range(1, 6): train(epoch) test()4. 结果可视化与分析4.1 训练过程可视化使用Matplotlib绘制训练过程中的准确率和损失曲线import matplotlib.pyplot as plt # 假设我们记录了训练过程中的指标 train_losses [0.5, 0.3, 0.2, 0.15, 0.1] test_accuracies [95, 97, 98, 98.5, 99] plt.figure(figsize(10, 5)) plt.subplot(1, 2, 1) plt.plot(train_losses, labelTraining Loss) plt.xlabel(Epoch) plt.ylabel(Loss) plt.legend() plt.subplot(1, 2, 2) plt.plot(test_accuracies, labelTest Accuracy) plt.xlabel(Epoch) plt.ylabel(Accuracy (%)) plt.legend() plt.show()4.2 模型预测示例查看模型在测试集上的预测结果import numpy as np # 获取一批测试数据 data, target next(iter(test_loader)) data, target data.to(cuda), target.to(cuda) # 预测 with torch.no_grad(): output model(data) pred output.argmax(dim1) # 显示前10个预测结果 fig, axes plt.subplots(2, 5, figsize(12, 6)) for i, ax in enumerate(axes.flat): ax.imshow(data[i].cpu().numpy().squeeze(), cmapgray) ax.set_title(fPred: {pred[i].item()}\nTrue: {target[i].item()}) ax.axis(off) plt.tight_layout() plt.show()5. 总结与下一步建议5.1 项目回顾通过本教程我们完成了以下工作快速部署PyTorch-2.x-Universal-Dev-v1.0开发环境验证了GPU和CUDA支持构建并训练了一个简单的CNN模型用于MNIST手写数字识别实现了98%以上的测试准确率可视化了训练过程和预测结果5.2 进阶学习建议如果想进一步深入学习可以尝试修改网络结构增加或减少层数观察性能变化尝试不同的优化器和学习率使用更复杂的数据集如CIFAR-10探索迁移学习技术使用预训练模型利用PyTorch 2.x的新特性如torch.compile()加速训练获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
返回列表