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

Python中的onnx.save()函数详解及用法示例

发布时间:2024-01-11 06:27:50

在Python中,ONNX是一个开放的、开放源代码的深度学习框架,可以用于训练和部署机器学习模型。对于训练后的模型,我们通常需要将其保存下来以便在其他平台上使用。ONNX提供了onnx.save()函数来保存模型。

onnx.save()函数的基本用法如下:

onnx.save(model, filename)

其中,model是你要保存的模型对象,可以是ONNX模型对象或者是一个PyTorch或TensorFlow的模型对象。filename是保存模型的文件名,可以是一个本地路径或者一个URL。

下面是一个使用onnx.save()函数保存PyTorch模型为ONNX模型的示例:

import torch
import torchvision.models as models
import onnx

# 加载一个PyTorch的模型,这里使用的是预训练的ResNet50模型
model = models.resnet50(pretrained=True)

# 将模型转为ONNX模型
dummy_input = torch.randn(1, 3, 224, 224)  # 创建一个假的输入
onnx_model = onnx.export(model, dummy_input, "resnet50.onnx")

# 保存ONNX模型
onnx.save(onnx_model, "resnet50.onnx")

在这个示例中,我们首先使用torchvision.models模块加载了一个预训练的ResNet50模型。然后,我们创建了一个假的输入张量,并使用onnx.export()函数将PyTorch模型转为ONNX模型。最后,我们使用onnx.save()函数保存了这个ONNX模型到本地。

除了基本的用法,onnx.save()函数还有一些可选参数可以用来控制保存的行为。下面是一些常用的可选参数:

- protocol_version:指定保存的ONNX模型的协议版本,默认为onnx.defs.onnx_opset_version()。可以使用onnx.checker.checker.COMPATIBILITY_SECONDARY_VERSION常量来指定一个较低的版本。

- export_params:指定是否将模型参数一起保存,默认为True

- opset_version:指定使用的ONNX operator set的版本,默认为最新版本。

下面是一个使用可选参数的示例:

import torch
import torchvision.models as models
import onnx

# 加载一个PyTorch的模型,这里使用的是预训练的ResNet50模型
model = models.resnet50(pretrained=True)

# 将模型转为ONNX模型
dummy_input = torch.randn(1, 3, 224, 224)  # 创建一个假的输入
onnx_model = onnx.export(model, dummy_input)

# 保存ONNX模型
onnx.save(onnx_model, "resnet50.onnx", export_params=False, protocol_version=12)

在这个示例中,我们使用export_params=False参数来指定不保存模型参数,使用protocol_version=12参数来指定保存的ONNX模型的协议版本为12。

总结来说,onnx.save()函数是用来保存ONNX模型的函数,可以将PyTorch或TensorFlow模型保存为ONNX模型。它具有灵活的参数设置,可以满足不同的保存需求。