PyTorch 2.8深度学习入门:Python零基础到搭建第一个神经网络
PyTorch 2.8深度学习入门Python零基础到搭建第一个神经网络1. 为什么选择PyTorch开始深度学习之旅深度学习听起来很高深其实没那么可怕。PyTorch作为当前最受欢迎的深度学习框架之一以其直观的API设计和活跃的社区支持成为新手入门的最佳选择。特别是PyTorch 2.8版本在保持易用性的同时性能也有显著提升。我刚开始接触深度学习时也被各种数学公式和术语吓到过。但后来发现PyTorch就像搭积木一样把复杂的数学运算封装成简单的函数调用。你不需要完全理解背后的数学原理就能搭建出可运行的神经网络模型。2. 环境准备快速搭建Python开发环境2.1 安装Python基础环境如果你是零基础建议从Anaconda开始。它集成了Python和常用科学计算库省去了很多配置麻烦访问Anaconda官网下载对应操作系统的安装包运行安装程序记得勾选Add Anaconda to PATH选项安装完成后打开终端输入conda --version验证是否成功2.2 配置PyTorch 2.8环境现在我们可以创建一个专门用于深度学习的虚拟环境conda create -n pytorch_tutorial python3.9 conda activate pytorch_tutorial pip install torch torchvision torchaudio安装完成后打开Python解释器输入以下代码测试是否安装成功import torch print(torch.__version__) # 应该输出2.8.x print(torch.cuda.is_available()) # 检查GPU是否可用3. PyTorch基础理解张量和自动求导3.1 张量(Tensor)是什么张量是PyTorch中最基本的数据结构可以简单理解为多维数组。让我们创建几个张量来感受一下import torch # 创建标量(0维张量) scalar torch.tensor(3.14) print(scalar) # tensor(3.1400) # 创建向量(1维张量) vector torch.tensor([1, 2, 3]) print(vector) # tensor([1, 2, 3]) # 创建矩阵(2维张量) matrix torch.tensor([[1, 2], [3, 4]]) print(matrix) # tensor([[1, 2], # [3, 4]])3.2 自动求导机制PyTorch最强大的特性之一是自动微分。我们只需要告诉PyTorch哪些张量需要计算梯度它就会自动记录所有运算# 创建一个需要计算梯度的张量 x torch.tensor(2.0, requires_gradTrue) # 定义一个简单的函数 y x**2 3*x 1 # 计算导数 y.backward() print(x.grad) # tensor(7.) 因为dy/dx 2x 3 7这个特性在训练神经网络时特别有用我们不需要手动计算复杂的导数。4. 搭建第一个神经网络手写数字识别4.1 准备数据集我们将使用经典的MNIST手写数字数据集。PyTorch提供了方便的加载方式from torchvision import datasets, transforms # 定义数据转换 transform transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,)) ]) # 下载并加载训练集 train_set datasets.MNIST(data, downloadTrue, trainTrue, transformtransform) train_loader torch.utils.data.DataLoader(train_set, batch_size64, shuffleTrue) # 查看一个batch的数据 images, labels next(iter(train_loader)) print(images.shape) # torch.Size([64, 1, 28, 28]) print(labels.shape) # torch.Size([64])4.2 定义神经网络结构我们来定义一个简单的全连接网络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(28*28, 128) # 输入层到隐藏层 self.fc2 nn.Linear(128, 64) # 隐藏层到隐藏层 self.fc3 nn.Linear(64, 10) # 隐藏层到输出层 def forward(self, x): x x.view(-1, 28*28) # 展平图像 x F.relu(self.fc1(x)) x F.relu(self.fc2(x)) x self.fc3(x) return x net Net() print(net)4.3 训练模型现在我们可以开始训练这个网络了import torch.optim as optim criterion nn.CrossEntropyLoss() optimizer optim.SGD(net.parameters(), lr0.003, momentum0.9) for epoch in range(5): # 训练5轮 running_loss 0.0 for images, labels in train_loader: # 清零梯度 optimizer.zero_grad() # 前向传播 outputs net(images) loss criterion(outputs, labels) # 反向传播和优化 loss.backward() optimizer.step() running_loss loss.item() print(fEpoch {epoch1}, Loss: {running_loss/len(train_loader):.3f})4.4 测试模型性能训练完成后我们可以测试一下模型在测试集上的表现test_set datasets.MNIST(data, downloadTrue, trainFalse, transformtransform) test_loader torch.utils.data.DataLoader(test_set, batch_size64, shuffleFalse) correct 0 total 0 with torch.no_grad(): for images, labels in test_loader: outputs net(images) _, predicted torch.max(outputs.data, 1) total labels.size(0) correct (predicted labels).sum().item() print(fAccuracy: {100 * correct / total:.2f}%)5. 下一步学习建议完成这个简单网络后你可能会惊讶于PyTorch的易用性。虽然我们的模型准确率可能只有90%左右但这已经是一个很好的开始。接下来你可以尝试以下方向增加网络层数或神经元数量观察性能变化尝试不同的激活函数和优化器学习卷积神经网络(CNN)来处理图像数据探索PyTorch Lightning等高级框架简化训练流程记住深度学习是一个实践性很强的领域。最好的学习方式就是不断尝试修改代码观察结果变化。遇到问题时PyTorch的官方文档和活跃的社区都是很好的资源。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。