当前位置: 首页 > 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)
http://www.lryc.cn/news/256893.html

相关文章:

  • Java调试技巧之垃圾回收机制解析
  • logstash插件简单介绍
  • 联邦多任务蒸馏助力多接入边缘计算下的个性化服务 | TPDS 2023
  • 【python爬虫】设计自己的爬虫 3. 文件数据保存封装
  • pta模拟题——7-34 刮刮彩票
  • 【补题】 1
  • IP地址定位技术为网络安全建设提供全新方案
  • Redis中HyperLogLog的使用
  • 新版Spring Security6.2架构 (一)
  • 名字的漂亮度
  • 机器学习基本概念2
  • Spring Cloud 与微服务学习总结(19)—— Spring Cloud Alibaba 之 Nacos 2.3.0 史上最大更新版本发布
  • 八、C#笔记
  • 利用Node.js和cpolar实现远程访问,无需公网IP和路由器设置的完美解决方案
  • C++如何通过调用ffmpeg接口对H264文件进行编码和解码
  • 使用MetaMask + Ganache搭建本地私有网络并实现合约部署与互动
  • 目标检测、目标跟踪、重识别
  • 高防IP防御效果怎么样,和VPN有区别吗
  • 探秘MSSQL存储过程:功能、用法及实战案例
  • 我们常说的流应用到底是什么?
  • ELK 日志解决方案
  • 本项目基于Spring boot的AMQP模块,整合流行的开源消息队列中间件rabbitMQ,实现一个向rabbitMQ
  • freeswitch webrtc video_demo客户端进行MCU的视频会议
  • 【鸿蒙学习网络】
  • MySQL系列(一):索引篇
  • Flink Flink数据写入Kafka
  • 《论文阅读》用于情绪回复生成的情绪正则化条件变分自动编码器 Affective Computing 2021
  • Pytorch CIFAR10图像分类 Swin Transformer篇
  • 【vim】常用操作
  • oracle、误操作删除数据库 数据恢复。