专业术语
推理代码
一、推理代码是什么?
通俗解释:
推理代码就像「使用说明书」——当你已经有一个训练好的模型,推理代码就是告诉计算机:
- 怎么加载(模型文件)
- 如何提问(输入一张图片)
- 怎么理解答案(输出识别结果)
对比训练代码:
- 训练代码:相当于在学校上课(需要大量数据,调整参数学习)
- 推理代码:相当于期末考试(直接用学好的知识解决问题)
二、推理代码有什么用?
- 实际使用模型:把训练好的模型变成能用的工具(比如手机扫码识别)
- 验证模型效果:用新数据测试模型的准确率
- 部署到生产环境:让用户通过网页/APP调用模型
生活例子:
训练好的OCR模型就像学会认字的眼睛,推理代码就是让这双眼睛:
① 看到身份证照片(输入) → ② 找到文字位置 → ③ 读出身份证号(输出)
三、如何编写推理代码?(三步走)
步骤1:加载训练好的模型
python
import torch
# 加载模型结构和权重(就像组装机器人+灌入知识)
model = torch.load('ocr_model.pth')
model.eval() # 切换到「考试模式」(不更新参数)步骤2:处理输入数据
python
from PIL import Image
import numpy as np
# 读取图片 → 调整尺寸 → 转为张量(模型能理解的数字格式)
image = Image.open('id_card.jpg')
image = image.resize((224, 224)) # 调整到模型需要的尺寸
input_tensor = torch.from_numpy(np.array(image)).float() # 转为数字矩阵
input_tensor = input_tensor.unsqueeze(0) # 添加批次维度(模型要求格式)步骤3:执行推理 + 解析结果
python
with torch.no_grad(): # 告诉模型不用记笔记(不计算梯度)
output = model(input_tensor) # 模型开始「认字」
# 将输出的数字转换为实际文字(比如身份证号)
predicted_text = decode_output(output) # 需要自定义解码函数
print("识别结果:", predicted_text)四、完整示例(图像分类任务)
python
# ----------- 推理代码示例:识别图片中的动物 -----------
import torch
from torchvision import transforms
from PIL import Image
# 1. 加载模型
model = torch.load('animal_classifier.pth')
model.eval()
# 2. 预处理图片
def process_image(image_path):
transform = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
])
image = Image.open(image_path)
return transform(image).unsqueeze(0)
# 3. 执行推理
input_tensor = process_image('cat.jpg')
with torch.no_grad():
outputs = model(input_tensor)
# 4. 解析结果
labels = ['猫', '狗', '鸟'] # 假设模型训练时的类别顺序
_, predicted_idx = torch.max(outputs, 1)
print("预测结果:", labels[predicted_idx.item()])