Python深度学习推理核心是加载模型、预处理输入、执行预测和封装部署:需适配PyTorch/.pt、TensorFlow/SavedModel、ONNX格式;预处理须严格复现训练逻辑;支持单样本与批量推理;推荐FastAPI轻量服务化,全局加载模型并加异常处理。

用Python做深度学习推理,核心是把训练好的模型变成能实际处理新数据的工具。重点不在重新训练,而在加载、预处理、预测和封装部署这几个环节。
模型加载与格式适配
不同框架训练的模型保存格式不同,推理前要确认加载方式:
- PyTorch常用.pt或.pth文件,用torch.load()加载后需调用model.eval()并关闭梯度;
- TensorFlow/Keras通常保存为SavedModel目录或.h5文件,用tf.keras.models.load_model()直接加载;
- ONNX是跨平台通用格式,适合部署到非Python环境,可用onnxruntime加载,性能稳定且轻量。
输入预处理必须对齐训练逻辑
预测出错常因预处理不一致。不是“差不多”,而是要完全复现训练时的变换流程:
- 图像任务:统一尺寸(如224×224)、归一化(例如mean=[0.485,0.456,0.406], std=[0.229,0.224,0.225])、通道顺序(RGB还是BGR);
- 文本任务:分词器(Tokenizer)版本、padding长度、是否截断、特殊token添加方式都得和训练时一致;
- 建议把预处理逻辑封装成独立函数,和模型一起保存或写进文档,避免临时手写出错。
单次预测与批量推理的写法差异
本地调试常用单样本,但上线必须支持批量,写法有关键区别:
立即学习“Python免费学习笔记(深入)”;
- PyTorch中确保输入是torch.Tensor且维度正确(如[1, C, H, W]单图 vs [N, C, H, W]批量);
- TensorFlow中注意model.predict()自动处理batch,但自定义model(x)调用时需保证输入shape合法;
- ONNX Runtime用session.run(),输入是字典(key为input name),值为numpy array,batch size由第一个维度决定。
轻量部署:Flask/FastAPI + 模型服务化
快速验证或小流量场景,用Web API封装最实用:
- 选FastAPI而非Flask——自动校验请求体、生成接口文档、异步支持更好;
- 模型加载放在全局或lifespan事件里,避免每次请求都重载;
- 接收base64图像或JSON文本,内部转成tensor/numpy,预测后返回结构化JSON;
- 加简单日志和异常捕获(如try/except处理无效输入),别让一个坏请求拖垮整个服务。
不复杂但容易忽略。推理不是“跑通就行”,而是让模型在真实数据上稳、准、快。










