PyTorch 实战教程:从模型搭建到训练的每一步

用深度学习搞事情,模型搭建和训练是绕不开的两步。而 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大模型是一项有前景且值得投入的时间和精力的重要选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值