模型训练流程

模型训练流程

本文讲解深度学习模型训练的完整流程,从数据准备到最终测试,附带示意图与可运行代码。


1. 深度学习训练的总体流程

深度学习训练过程可以概括为:

数据准备 → 模型定义 → 损失函数 → 优化器 → 训练循环 → 验证 → 调参 → 测试

2. 训练流程步骤详解


Step 1:准备数据(DataLoader)

DataLoader 会将数据自动打包成 batch,并在训练中批量喂给模型。


Step 2:定义模型(Model)

如:CNN、YOLO、BERT 等。


Step 3:定义损失函数(Loss Function)

常用:

  • 分类任务:CrossEntropyLoss
  • 回归任务:MSELoss

Step 4:定义优化器(Optimizer)

常用:

  • SGD
  • Adam
  • AdamW

Step 5:训练循环(Training Loop)

模型在这里不断:

  1. 前向传播
  2. 计算损失
  3. 反向传播
  4. 更新参数

PyTorch 标准训练代码(可直接用)

import torch
import torch.nn as nn
from torch.utils.data import DataLoader, TensorDataset

# ====================== 1. 数据准备 ======================
x = torch.randn(500, 10)
y = torch.randint(0, 2, (500,))
dataset = TensorDataset(x, y)
loader = DataLoader(dataset, batch_size=16, shuffle=True)

# ====================== 2. 定义模型 ======================
model = nn.Sequential(
    nn.Linear(10, 64),
    nn.ReLU(),
    nn.Linear(64, 2)
)

# ====================== 3. 损失函数 + 优化器 ======================
loss_fn = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)

# ====================== 4. 训练流程 ======================
for epoch in range(10):
    total_loss = 0
    for batch_x, batch_y in loader:

        preds = model(batch_x)
        loss = loss_fn(preds, batch_y)

        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

        total_loss += loss.item()

    print(f"Epoch {epoch+1}, Loss = {total_loss:.4f}")

print("训练完成!")

6. 验证与测试流程

训练完成后要使用:

  • 验证集
  • 测试集

代码示例:

model.eval()
correct = 0

with torch.no_grad():
    for batch_x, batch_y in loader:
        preds = model(batch_x)
        predicted = torch.argmax(preds, dim=1)
        correct += (predicted == batch_y).sum().item()

acc = correct / len(dataset)
print("准确率:", acc)

7. 总结

深度学习训练流程包含:

  • 数据准备
  • DataLoader
  • 模型搭建
  • 损失函数
  • 优化器
  • 训练循环
  • 验证 & 测试

掌握这套流程后,你就能:

  • 微调现有模型
posted @ 2025-11-01 21:28  元始天尊123  阅读(7)  评论(0)    收藏  举报