PyTorch .pth
转 ONNX:从模型训练到跨平台部署
在深度学习里,模型的格式决定了它的可用性。
如果你是 PyTorch 用户,你可能熟悉 .pth
文件,它用于存储训练好的模型。
但当你想在不同的环境(如 TensorRT、OpenVINO、ONNX Runtime)部署模型时,.pth
可能并不适用。这时,ONNX(Open Neural Network Exchange)就必不可少。
本文目录:
- 什么是
.pth
文件? - 什么是
.onnx
文件? - 为什么要转换?
- 如何转换
.pth
到.onnx
? - 转换后的好处和潜在风险
1. 什么是 .pth
文件?
.pth
是 PyTorch 专属的模型权重文件,用于存储:
- 模型权重(state_dict):仅保存参数,不包含模型结构。
- 完整模型:包含模型结构和权重,适用于直接
torch.save(model, "model.pth")
保存的情况。
在 PyTorch 中,你可以用以下方式加载 .pth
:
import torch
from NestedUNet import NestedUNet # 你的模型类
# 仅保存权重的加载方式
model = NestedUNet(num_classes=2, input_channels=3)
model.load_state_dict(torch.load("best_model.pth"))
model.eval()
.pth
文件只能在 PyTorch 运行的环境中使用,不能直接在 TensorFlow、OpenVINO 或 TensorRT