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

目录

训练(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)
相关推荐
欣欣之王来了6 分钟前
面试指南:执行式AI岗位真题解析
人工智能
墨天梦7 分钟前
25-评估指标与基准设计
人工智能·自然语言处理
烈风逍遥7 分钟前
第七篇:提示词模板管理与 Agent 提示词编排
前端·人工智能·后端
科技苑8 分钟前
如何打造一个高效的全栖内容制作生态系统?
深度学习
橘和柠14 分钟前
AI-Infra-Guard 部署与技能扫描实战:Docker 一键起,附我的一次“漏报”复盘
人工智能
茵Cindy15 分钟前
从RPA到Agent:HR流程自动化的架构演进与选型建议
人工智能·ai+hr·hr智能体
m4Rk_19 分钟前
【论文阅读】Agent 记忆机制(77):TSM——让记忆回到事件真正发生的时间
论文阅读·人工智能·学习·开源·github
陈天伟教授22 分钟前
技能人才评价考评员(高级考评员)备考要点-模块一技能人才评价制度体系与政策法规
人工智能·具身智能
ksueh24 分钟前
2026网文有声化新规落地:AI配音的边界划在了哪里
人工智能·ai写作·ai工具·ai写小说
旺仔小馒头wang31 分钟前
AI 智能手机发布会:赋予人类的五种新能力
人工智能·学习·音视频