跳到主要内容

🔥 PyTorch 入门指南

PyTorch 是由 Facebook 推出的深度学习框架,特点是动态计算图和 Pythonic 的编程风格,广泛用于科研、教学和生产环境。


✅ PyTorch 能解决什么问题?

应用方向示例任务适用场景
图像处理图像分类、目标检测、分割医疗影像、自动驾驶等
自然语言情感分析、翻译、问答系统AI客服、语言模型
时间序列股价预测、温度预测金融、气象、IoT
强化学习游戏智能体、策略优化智能机器人、游戏AI
定制任务可控生成模型、图神经网络等学术研究、创新开发

📦 安装

pip install torch torchvision

🚀 第一个 PyTorch 示例:线性回归

1️⃣ 导入模块和数据准备

导入 torch
torch 导入 nn

X = torch.tensor([[1.0], [2.0], [3.0], [4.0]])
y = torch.tensor([[2.0], [4.0], [6.0], [8.0]])

2️⃣ 定义模型

模型 = nn.Linear(输入特征数=1, 输出特征数=1)

3️⃣ 训练模型

损失函数 = nn.MSELoss()
优化器 = torch.optim.SGD(模型.参数(), 学习率=0.01)

循环 500:
优化器.zero_grad()
输出 = 模型(X)
损失 = 损失函数(输出, y)
损失.反向传播()
优化器.step()

4️⃣ 使用模型预测

预测 = 模型(torch.tensor([[10.0]]))
打印(预测)

🧱 构建神经网络结构

神经网络(nn.Module):
初始化(self):
调用 super()
self.全连接 = nn.Sequential(
nn.Linear(784, 128),
nn.ReLU(),
nn.Linear(128, 10)
)
前向(self, x):
返回 self.全连接(x)

🔄 训练流程总结

步骤内容
数据准备使用张量、数据集、数据加载器
构建模型继承 nn.Module 并定义前向传播
定义损失常用:nn.MSELoss, nn.CrossEntropyLoss
优化器torch.optim.SGD, Adam
训练循环前向、损失、反向传播、更新

🧰 常用组件一览

模块用途
torch.Tensor核心数据结构,支持 GPU 运算
torch.nn模型层结构、损失函数
torch.optim优化器,如 SGD、Adam
torch.utils.data数据集与加载器处理
torch.autograd自动求导系统
torchvision图像数据集、预训练模型等

📦 示例:MNIST 手写数字识别(完整流程)

torchvision 导入 datasets, transforms

变换 = transforms.ToTensor()
训练集 = datasets.MNIST(root="./data", train=True, download=True, transform=变换)
测试集 = datasets.MNIST(root="./data", train=False, download=True, transform=变换)

训练加载器 = torch.utils.data.DataLoader(训练集, 批量大小=64, shuffle=True)
测试加载器 = torch.utils.data.DataLoader(测试集, 批量大小=64, shuffle=False)

定义神经网络()
训练多个 epoch
测试准确率