onnx模块

ONNX

可视化网络的方法:

(1)打开下面的网址,把网络拖到里面

Netron

(2)使用netron

netron是一个可以支持各种框架的神经网络模型可视化工具。

  •             安装:   
#指定清华源安装
pip install netron -i  https://pypi.tuna.tsinghua.edu.cn/simple
  •            新建一个python文件netrontest.py
import netron
modelPath = "你的模型文件名.扩展名"
netron.start(modelPath)

这是会自动打开浏览器到地址http://localhost:8080
显示网络图。此时即可查看输入输出或其中层的信息。

1.ONNX的定义

       Open Neural Network Exchange(ONNX,开放神经网络交换)格式,是一个用于表示深度学习模型的标准,可使模型在不同框架之间进行转移。

       ONNX是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型。注意ONNX文件不仅仅存储了神经网络模型的权重,同时也存储了模型的结构信息以及网络中每一层的输入输出和一些其它的辅助信息。

       目前官方支持加载ONNX模型并进行推理的深度学习框架有: Caffe2, PyTorch, MXNet,ML.NET,TensorRT 和 Microsoft CNTK,并且 TensorFlow 也非官方的支持ONNX。

    ONNX为AI模型提供开源格式。 它定义了可扩展的计算图模型,以及内置运算符和标准数据类型的定义。

ONNX由以下组件组成:

可扩展计算图模型的定义
标准数据类型的定义
内置运算符的定义

2.转ONNX

torch.onnx.export(model, args, f, export_params=True, verbose=False, training=False, input_names=None, output_names=None)

将一个模型导出到ONNX格式。该exporter会运行一次你的模型,以便于记录模型的执行轨迹,并将其导出;目前,exporter还不支持动态模型(例如,RNNs)。

参数:

  • model(torch.nn.Module)-要被导出的模型
  • args(参数的集合)-模型的输入,例如,这种model(*args)方式是对模型的有效调用。任何非Variable参数都将硬编码到导出的模型中;任何Variable参数都将成为导出的模型的输入,并按照他们在args中出现的顺序输入。如果args是一个Variable,这等价于用包含这个Variable的1-ary元组调用它。(注意:现在不支持向模型传递关键字参数。)
  • f-一个类文件的对象(必须实现文件描述符的返回)或一个包含文件名字符串。一个二进制Protobuf将会写入这个文件中。
  • export_params(bool,default True)-如果指定,所有参数都会被导出。如果你只想导出一个未训练的模型,就将此参数设置为False。在这种情况下,导出的模型将首先把所有parameters作为参arguments,顺序由model.state_dict().values()指定。
  • verbose(bool,default False)-如果指定,将会输出被导出的轨迹的调试描述。
  • training(bool,default False)-导出训练模型下的模型。目前,ONNX只面向推断模型的导出,所以一般不需要将该项设置为True。
  • input_names(list of strings, default empty list)-按顺序分配名称到图中的输入节点。
  • output_names(list of strings, default empty list)-按顺序分配名称到图中的输出节点。

ONNX Runtime 是一种高性能、可移植的开源框架,旨在提供跨平台的支持,使得开发者能够轻松部署机器学习模型,包括但不限于深度学习模型。它的核心优势在于其优化了模型推理过程,提高了预测的速度和效率,同时也降低了资源消耗。以下是 ONNX Runtime 的几个关键特性以及它的主要用途: ### 主要功能及特点: 1. **高性能与跨平台支持**:ONNX Runtime 旨在提供高性能的模型推理能力,同时支持多种操作系统和硬件平台,如 Linux、Windows 和 macOS 等,以及各种类型的 CPU、GPU 和加速卡。 2. **灵活性与可配置性**:用户可以根据特定需求定制推理策略,比如选择最佳的硬件设备、调整内存分配、启用或禁用特定优化技术等。 3. **广泛的模型兼容性**:它可以加载并运行基于 ONNX 标准的不同来源的模型,支持 TensorFlow、PyTorch、Keras 等流行的机器学习库生成的模型。 4. **动态图与静态图优化**:它能够高效地处理静态和动态形状的数据输入,自动优化模型以提高推断速度和内存使用效率。 5. **易用性**:ONNX Runtime 提供了一个简单且统一的API接口,无论是集成到现有应用程序中还是作为独立服务部署,都相对容易。 6. **持续改进与社区驱动**:作为一个活跃的开源项目,它持续接收来自社区的反馈和技术贡献,不断优化性能和增加新特性。 ### 应用场景: 1. **实时决策系统**:例如,在自动驾驶汽车中,需要快速做出复杂的道路判断,ONNX Runtime 可以提供所需的即时响应能力和高计算效率。 2. **物联网(IoT)设备**:对于嵌入式或边缘计算设备来说,ONNX Runtime 的低资源占用和高性能使其成为理想的选择。 3. **企业级应用**:在大型企业的生产环境中,ONNX Runtime 有助于构建大规模、分布式的服务架构,提供预测分析、推荐系统等关键业务功能。 4. **科研与教育**:对于研究人员和学生而言,ONNX Runtime 提供了一种方便的方式来部署和测试实验模型,促进学术研究和教学活动。 总之,ONNX Runtime 以其强大的性能、灵活性和广泛的应用范围,在多种行业和领域中发挥着重要作用,特别是那些对模型推理速度有较高要求的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值