用深度学习搞事情,模型搭建和训练是绕不开的两步。而 PyTorch,作为一个“又灵活又好用”的深度学习框架,简直就是写代码的快乐源泉。今天我们就从 0 到 1,实战 PyTorch 的模型搭建和训练流程。说白了,看完你就能自己搭个神经网络,喂点数据进去,再让它干点活。
安装 PyTorch
要用 PyTorch,得先装上它。PyTorch 的安装稍微有点讲究,主要是要根据你的硬件选择 CPU 版本还是 GPU 版本。
基本安装命令
如果你只用 CPU,就这么装:
pip install torch torchvision
如果你有 NVIDIA 的 GPU(并且装了 CUDA),可以用下面的命令:
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118
温馨提示:
💡 GPU 能大大加速训练速度,但得先确保你的显卡支持 CUDA,并且驱动版本合格。
数据准备
模型训练需要数据,就像人学技能需要教材。PyTorch 提供了torch.utils.data
模块,让你可以轻松加载和管理数据。
使用内置数据集
为了简单,我用 PyTorch 自带的 MNIST 数据集(手写数字)。我们可以用torchvision.datasets
直接下载并加载它。
import torch
from torchvision import datasets, transforms
# 数据预处理
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.5,), (0.5,)) # 标准化到 [-1, 1]
])
# 加载训练和测试数据
train_data = datasets.MNIST(root="./data", train=True, download=True, transform=transform)
test_data = datasets.MNIST(root="./data", train=False, download=True, transform=transform)
# 数据加载器
train_loader = torch.utils.data.DataLoader(train_data, batch_size=64, shuffle=True)
test_loader = torch.utils.data.DataLoader(test_data, batch_size=64, shuffle=False)
运行后,MNIST 数据集会被下载到./data
目录下,同时数据会被转换成 PyTorch 的张量格式。
温馨提示:
🍔batch_size 是每次喂给模型的数据量,太小会导致训练慢,太大则可能爆显存。
搭建模型
模型就是一个“函数”,它接收输入(比如图片),输出预测结果(比如是个7
)。在 PyTorch 里,可以通过继承torch.nn.Module
来定义自己的模型。
定义一个简单的神经网络
我们用一个简单的两层全连接网络来做分类任务。
import torch.nn as nn
# 定义模型
class SimpleNN(nn.Module):
def __init__(self):
super(SimpleNN, self).__init__()
self.fc1 = nn.Linear(28 * 28, 128) # 输入层到隐藏层
self.fc2 = nn.Linear(128, 10) # 隐藏层到输出层
def forward(self, x):
x = x.view(-1, 28 * 28) # 展平输入 (28x28 -> 784)
x = torch.relu(self.fc1(x)) # 激活函数 ReLU
x = self.fc2(x)
return x
这里的forward
方法定义了模型的前向传播过程,而torch.relu
是一个激活函数,用来引入非线性。
温馨提示:
🤔view(-1, 28 * 28)
是用来把二维图片展平成一维向量,方便传入全连接层。
定义损失函数和优化器
模型需要优化,就得有“目标”和“规则”。在 PyTorch 里,目标是损失函数,规则是优化器。
定义损失函数
分类任务通常用交叉熵损失函数:
loss_fn = nn.CrossEntropyLoss()
交叉熵会计算预测结果和真实标签之间的误差,误差越小,模型就越靠谱。
定义优化器
优化器负责调整模型的参数,让它越来越接近正确答案。我们用经典的 Adam 优化器:
import torch.optim as optim
model = SimpleNN() # 初始化模型
optimizer = optim.Adam(model.parameters(), lr=0.001)
lr
是学习率,决定了每次参数调整的步伐大小。
温馨提示:
🚀 学习率太大模型会不稳定,太小则训练太慢。一般从0.001
开始调。
模型训练
训练过程就是:喂数据 -> 计算预测值 -> 计算损失 -> 调整参数。我们用循环来完成这个流程。
训练代码
# 训练模型
epochs = 5
for epoch in range(epochs):
model.train() # 设置为训练模式
total_loss = 0
for images, labels in train_loader:
optimizer.zero_grad() # 清空上一步的梯度
outputs = model(images) # 前向传播
loss = loss_fn(outputs, labels) # 计算损失
loss.backward() # 反向传播
optimizer.step() # 更新参数
total_loss += loss.item()
print(f"Epoch {epoch+1}/{epochs}, Loss: {total_loss:.4f}")
运行后,你会看到每个epoch
的损失值逐渐下降,说明模型学得还不错。
温馨提示:
🎯 每次训练前用model.train()
,告诉 PyTorch 这是训练阶段(会启用 Dropout 等机制)。
模型评估
模型训练完了,得看看它到底行不行。我们用测试集来评估准确率。
测试代码
model.eval() # 设置为评估模式
correct = 0
total = 0
with torch.no_grad(): # 不计算梯度
for images, labels in test_loader:
outputs = model(images)
_, predicted = torch.max(outputs, 1) # 获取预测结果
total += labels.size(0)
correct += (predicted == labels).sum().item()
accuracy = correct / total
print(f"Test Accuracy: {accuracy * 100:.2f}%")
运行后,你会看到模型在测试集上的准确率,比如97.85%
,还挺靠谱。
温馨提示:
🔒 测试时用torch.no_grad()
,可以节省内存和计算资源。
保存和加载模型
训练好的模型可以保存下来,下次直接加载就能用。
保存模型
torch.save(model.state_dict(), "model.pth")
这会把模型的参数保存到model.pth
文件里。
加载模型
model = SimpleNN() # 重新初始化模型
model.load_state_dict(torch.load("model.pth"))
加载后,模型就恢复到了训练好的状态,可以直接用来预测。
常见问题和解决办法
- 训练慢:尝试使用 GPU 加速,只需在代码开头加一句
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
,然后把模型和数据都转到device
上。 - 损失不下降:检查数据是否标准化,学习率是否合适,或者试试更复杂的模型结构。
- 过拟合:如果训练集表现很好,但测试集表现差,可以加一些正则化手段,比如 Dropout。
PyTorch 的模型搭建和训练其实没那么复杂,大概流程就是:准备数据 -> 定义模型 -> 训练模型 -> 评估效果。熟悉这些步骤后,你就可以胜任大部分深度学习任务了!
如何学习大模型
现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。
作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。
下面这些都是我当初辛苦整理和花钱购买的资料,现在我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来
,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线
很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。
二、AI大模型视频教程
三、AI大模型各大学习书籍
四、AI大模型各大场景实战案例
五、结束语
学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。
再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。
因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。