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

目录

训练(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)
相关推荐
龙粤GEO17 分钟前
实体Entity在GEO中代表什么含义
人工智能
拜小白1 小时前
【论文解读】《DeepPanoContext:用全局场景关系图 + 可微关系优做全景 3D 场景理解
深度学习·计算机视觉·全景图
剑雨巍巍1 小时前
AI Agent面试之基础概念
人工智能
微帧Visionular2 小时前
AI视频单帧清晰,播放时却闪烁,原因是什么?
人工智能·深度学习·音视频
武子康2 小时前
MultiNet6 空闲崩溃:`EXCVADDR=0x8` 后又出现 `CORRUPT HEAP`
人工智能·后端·agent
云智慧AIOps社区2 小时前
智能巡检机器人应用场景解析:机房巡检、园区安防、管廊巡视与展厅导览
人工智能·机器人·具身智能·智能巡检机器人·企业级智能巡检机器人·机房巡检机器人·导览机器人
EnCi Zheng2 小时前
Agent 如何进行工具调用:从一次 Function Calling 到生产级工具编排的完整链路
大数据·人工智能·agent·ai编程·工具调用
赛博守夜人2 小时前
AI安全攻防与治理之十四:AI 安全测试不能脱离传统安全,Web、API、移动端与模型攻击面的组合拳
前端·人工智能·安全
lovingsoft2 小时前
AI 时代未来软件形态趋势:从固定功能应用,走向意图驱动、智能体原生的柔性系统-浅析
人工智能
GlobalInfo2 小时前
重磅发布 | 2026年船体清洁机器人行业研究报告:市场规模、发展前景与十五五战略地图
大数据·人工智能·机器人