深度学习中模型的推理和训练

目录

训练(training)阶段

会包含三步:

  1. 前向传播(forward):算预测结果
  2. 计算损失(loss)
  3. 反向传播(backward):计算梯度
  4. 参数更新(optimizer.step)

👉 这一步才需要梯度、计算图、反传。

在 PyTorch 里通常写成:

python 复制代码
import torch
import torch.nn as nn
import torch.optim as optim

# 1. 定义模型
model = nn.Linear(10, 1)

# 2. 损失函数 & 优化器
criterion = nn.MSELoss()
optimizer = optim.Adam(model.parameters(), lr=1e-3)

# 3. 切换到训练模式
model.train()

for epoch in range(100):
    # 假数据
    x = torch.randn(32, 10)
    y = torch.randn(32, 1)

    # ===== 前向传播 =====
    y_pred = model(x)
    loss = criterion(y_pred, y)

    # ===== 反向传播 =====
    optimizer.zero_grad()   # 清空旧梯度
    loss.backward()         # 计算梯度
    optimizer.step()        # 更新参数

    print(f"epoch {epoch}, loss = {loss.item():.4f}")

推理(inference)阶段

只做:

  • 前向传播
  • 不计算 loss
  • 不做反向传播
  • 不更新参数

因此:

  • 不需要梯度
  • 不需要保留计算图
  • 显存占用和计算量都更小
  • 速度更快

在 PyTorch 里通常写成:

python 复制代码
import torch
import torch.nn as nn

# 已训练好的模型
model = nn.Linear(10, 1)
model.load_state_dict(torch.load("model.pt"))

# 1. 切换到推理模式
model.eval()

# 2. 禁用梯度
with torch.no_grad():
    x = torch.randn(1, 10)

    # ===== 仅前向传播 =====
    y_pred = model(x)

print(y_pred)
相关推荐
逸模1 天前
告别熬夜手工整理台账,逸模智能归集实现项目数据自动化存档
大数据·运维·人工智能·笔记·其他·信息可视化·自动化
weixin_397574091 天前
生产管理和设备管理:制造执行层的AI痛点
人工智能·制造
冬奇Lab1 天前
Agent 系列(16):工具链设计——让 LLM 用对工具的五个原则
人工智能·llm·agent
冬奇Lab1 天前
每日一个开源项目(第125篇):taste-skill - 给 AI 装上审美,让前端不再千篇一律
人工智能·开源·agent
Ajie'Blog1 天前
Copilot Agent Tasks API 开放:AI 编程开始进入后台任务时代
服务器·前端·javascript·人工智能·copilot·ai编程
SEONIB_Explorer1 天前
AI SEO 与传统SEO成本对比:哪种更划算?
人工智能
一次旅行1 天前
AI领域每日资讯报告
人工智能
Python私教1 天前
Cursor + Claude Code 全流程实战:搭一套生产级 AI 编程工作流(2026 最新版)
人工智能·语言模型·qwen·ollama·本地大模型·大模型部署·deepseek
来让爷抱一个1 天前
MonkeyCode 的 Git 协作功能:团队开发新范式
人工智能·ai编程