当前位置: 首页 > news >正文

4.8 构建onnx结构模型-Less

前言

构建onnx方式通常有两种:
1、通过代码转换成onnx结构,比如pytorch —> onnx
2、通过onnx 自定义结点,图,生成onnx结构

本文主要是简单学习和使用两种不同onnx结构,
下面以 Less 结点进行分析

在这里插入图片描述

方式

方法一:pytorch --> onnx

暂缓,主要研究方式二

方法二: onnx

import onnx 
from onnx import TensorProto, helper, numpy_helper
import numpy as npdef run():print("run start....\n")less = helper.make_node("Less",name="Less_0",inputs=["input1", "input2"],outputs=["output1"],)input1_data = np.load("./tensor.npy") # 16, 397# input1_data = np.load("./data.npy")  # 16, 398 test# print(f"input1_data shape:{input1_data.shape}\n")# input1_data = np.zeros((16,398))initializer = [ helper.make_tensor("input1", TensorProto.FLOAT, [16,397], input1_data)]cast_nodel = helper.make_node(op_type="Cast",inputs=["output1"],outputs=["output2"],name="test_cast",to=TensorProto.FLOAT,)value_info = helper.make_tensor_value_info("output2", TensorProto.BOOL, [16,397])graph = helper.make_graph(nodes=[less, cast_nodel],name="test_graph",inputs=[helper.make_tensor_value_info("input2", TensorProto.FLOAT, [16,1])],outputs=[helper.make_tensor_value_info("output2",TensorProto.FLOAT, [16,397])],initializer=initializer,value_info=[value_info],)op = onnx.OperatorSetIdProto()op.version = 11model = helper.make_model(graph, opset_imports=[op])model.ir_version = 8print("run done....\n")return modelif __name__ == "__main__":model = run()onnx.save(model, "./test_less_ori.onnx")

run

import onnx
import onnxruntime
import numpy as np# 检查onnx计算图
def check_onnx(mdoel):onnx.checker.check_model(model)# print(onnx.helper.printable_graph(model.graph))def run(model):print(f'run start....\n')session = onnxruntime.InferenceSession(model,providers=['CPUExecutionProvider'])input_name1 = session.get_inputs()[0].name  input_data1= np.random.randn(16,1).astype(np.float32)print(f'input_data1 shape:{input_data1.shape}\n')output_name1 = session.get_outputs()[0].namepred_onx = session.run([output_name1], {input_name1: input_data1})[0]print(f'pred_onx shape:{pred_onx.shape} \n')print(f'run end....\n')if __name__ == '__main__':path = "./test_less_ori.onnx"model = onnx.load("./test_less_ori.onnx")check_onnx(model)run(path)

相关文章:

  • 中文分词演进(查词典,hmm标注,无监督统计)新词发现
  • 【重点】【二叉树】114. 二叉树展开为链表
  • 【go语言开发】go项目打包成Docker镜像,包括Dockerfile命令介绍、goctl工具生成
  • leetcode 100.相同的树
  • 非常抱歉的通知
  • linux 命令 tmux 用法详解
  • JVM实战-掌握分派方法规则
  • MyBatis 四大核心组件之 StatementHandler 源码解析
  • STM32——继电器
  • Photoshop Circular Text
  • 鸿蒙应用开发(二)环境搭建
  • Linux gtest单元测试
  • 前端组件库开发
  • 模型 心流
  • 【华为数据之道学习笔记】3-4主数据治理
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • 3.7、@ResponseBody 和 @RestController
  • css布局,左右固定中间自适应实现
  • echarts的各种常用效果展示
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • JAVA之继承和多态
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Puppeteer:浏览器控制器
  • Python十分钟制作属于你自己的个性logo
  • 从零开始在ubuntu上搭建node开发环境
  • 仿天猫超市收藏抛物线动画工具库
  • 观察者模式实现非直接耦合
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 事件委托的小应用
  • 算法---两个栈实现一个队列
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • Spring Batch JSON 支持
  • ​io --- 处理流的核心工具​
  • ​ubuntu下安装kvm虚拟机
  • ![CDATA[ ]] 是什么东东
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #Linux(Source Insight安装及工程建立)
  • (175)FPGA门控时钟技术
  • (4)STL算法之比较
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (七)Java对象在Hibernate持久化层的状态
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (十六)一篇文章学会Java的常用API
  • (转)菜鸟学数据库(三)——存储过程
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (转载)虚函数剖析
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • . Flume面试题
  • .NetCore 如何动态路由
  • /etc/fstab 只读无法修改的解决办法