欢迎访问宙启技术站
智能推送

Python中利用onnx.save()函数保存和加载模型的完整流程

发布时间:2024-01-11 06:30:12

在Python中使用ONNX库的onnx.save()函数可以保存训练好的模型,并使用onnx.load()函数加载已保存的模型。

下面是在Python中保存和加载ONNX模型的完整流程:

1. 导入所需的库和模块:

import torch
import torchvision
import onnx
import onnxruntime

2. 定义并训练模型:

# 定义模型
model = torchvision.models.resnet18(pretrained=True)

# 训练模型
# ...

# 将模型设置为评估模式
model.eval()

3. 创建一个输入配送并运行模型:

# 创建一个随机输入
input_tensor = torch.rand(1, 3, 224, 224)

# 运行模型
output = model(input_tensor)

4. 保存模型为ONNX格式:

# 将模型转换为ONNX格式
onnx_model = onnx.export(model, input_tensor, "model.onnx")

5. 加载保存的模型:

# 加载保存的模型
onnx_model = onnx.load("model.onnx")

6. 创建ONNX运行时:

# 创建ONNX运行时
ort_session = onnxruntime.InferenceSession("model.onnx")

7. 运行模型:

# 创建一个随机输入
input_data = np.random.random(size=(1, 3, 224, 224)).astype(np.float32)

# 使用ONNX运行时运行模型
output = ort_session.run(None, {"input": input_data})

8. 打印模型输出:

# 打印模型的输出
print('Output:', output)

以上是使用ONNX库保存和加载模型的完整流程。下面是一个完整的使用示例:

import torch
import torchvision
import onnx
import onnxruntime

# 定义并训练模型
model = torchvision.models.resnet18(pretrained=True)
model.eval()

# 创建一个随机输入
input_tensor = torch.rand(1, 3, 224, 224)

# 运行模型
output = model(input_tensor)

# 将模型保存为ONNX格式
onnx.export(model, input_tensor, "model.onnx")

# 加载保存的模型
onnx_model = onnx.load("model.onnx")

# 创建ONNX运行时
ort_session = onnxruntime.InferenceSession("model.onnx")

# 创建一个随机输入
input_data = np.random.random(size=(1, 3, 224, 224)).astype(np.float32)

# 使用ONNX运行时运行模型
output = ort_session.run(None, {"input": input_data})

# 打印模型输出
print('Output:', output)

这个示例演示了如何在Python中使用ONNX库保存和加载模型,并使用ONNX运行时运行模型。将训练好的模型保存为ONNX格式后,您可以在没有Python环境的机器上加载模型并运行它,这极大地提高了模型的可移植性和部署灵活性。