C#Onnx模型信息查看工具

news2025/2/28 12:39:58

效果

Netron效果

项目

代码

using Microsoft.ML.OnnxRuntime;
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;

namespace Onnx_Demo
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }

        string fileFilter = "*.*|*.onnx;";
        string model_path;

        StringBuilder sb = new StringBuilder();
        InferenceSession onnx_session;

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = fileFilter;
            if (ofd.ShowDialog() != DialogResult.OK) return;

            txtInfo.Text = "";
            model_path = ofd.FileName;
            txtPath.Text = model_path;

            txtInfo.Text = "正在读取,请稍后……";
            Application.DoEvents();

            ShowInfo(model_path);
        }

        void ShowInfo(string model_path)
        {
            try
            {
                onnx_session = new InferenceSession(model_path);
            }
            catch (Exception ex)
            {
                MessageBox.Show("读取模型异常:" + ex.Message);
            }
            sb.Clear();

            //Model Properties
            sb.AppendLine("Model Properties");
            sb.AppendLine("-------------------------");
            Dictionary<string, string> CustomMetadataMap = onnx_session.ModelMetadata.CustomMetadataMap;
            foreach (string key in CustomMetadataMap.Keys)
            {
                sb.AppendLine(String.Format("{0}:{1}",key, CustomMetadataMap[key])) ;
            }
            sb.AppendLine("---------------------------------------------------------------");

            IReadOnlyList<string> InputNames = onnx_session.InputNames;
            IReadOnlyDictionary<string, NodeMetadata> InputMetadata = onnx_session.InputMetadata;
            //Inputs
            sb.AppendLine("");
            sb.AppendLine("Inputs");
            sb.AppendLine("-------------------------");

            foreach (var item in InputMetadata)
            {
                sb.AppendLine("name:" + item.Key);
                NodeMetadata  nmData= item.Value;
                int[] dim = nmData.Dimensions;
                sb.AppendLine("tensor:" + nmData.ElementDataType.ToString()+"["+ String.Join(", ", dim)+"]");
            }
            sb.AppendLine("---------------------------------------------------------------");


            IReadOnlyList<string> OutputNames = onnx_session.OutputNames;
            IReadOnlyDictionary<string, NodeMetadata> OutputMetadata = onnx_session.OutputMetadata;
            //Outputs
            sb.AppendLine("");
            sb.AppendLine("Outputs");
            sb.AppendLine("-------------------------");

            foreach (var item in OutputMetadata)
            {
                sb.AppendLine("name:" + item.Key);
                NodeMetadata nmData = item.Value;
                int[] dim = nmData.Dimensions;
                sb.AppendLine("tensor:" + nmData.ElementDataType.ToString() + "[" + String.Join(", ", dim) + "]");
            }
            sb.AppendLine("---------------------------------------------------------------");

            txtInfo.Text = sb.ToString();

        }

        private void Form1_Load(object sender, EventArgs e)
        {


        }

    }
}

下载

可执行程序exe包下载

源码下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1158212.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

性能测试怎么入门?一文7个知识点带你成功入门

一、相关概念 1、性能测试相关&#xff1a;负载测试&#xff0c;性能测试&#xff0c;压力测试&#xff0c;稳定性测试&#xff0c;全链路测试等 2、性能指标&#xff1a;吞吐率&#xff0c;tps&#xff0c;并发用户数&#xff0c;吞吐量&#xff0c;响应时间等 二、性能测试…

colly库的爬虫程序

使用colly库的爬虫程序&#xff0c;该程序将使用Go语言爬取内容。 package main ​ import ("fmt""log" ​"github.com/gocolly/colly" ) ​ func main() {// 创建一个Colly爬虫实例c : colly.NewCrawler() ​// 设置服务器c.OnRequest(func(r …

我做云原生的那几年

背景介绍 在2020年6月&#xff0c;我加入了一家拥有超过500人的企业。彼时&#xff0c;前端团队人数众多&#xff0c;有二三十名成员。在这样的大团队中&#xff0c;每个人都要寻找自己的独特之处和核心竞争力。否则&#xff0c;你可能会沉没于常规的增删改查工作中&#xff0…

Redis配置多个端口记录

一、背景&#xff1a; 使用Redis做WEB系统缓存&#xff0c;如登录信息、数据字典 等 键值对信息&#xff1b;存在多个测试环境及开发连接使用默认的6379端口&#xff0c;易造成Key重复&#xff0c;缓存紊乱&#xff0c;网络堵塞&#xff1b; 额外增开6380、6381端口&#xff0c…

翻页电子版照片书如何制作?

在漫长的生命长河里&#xff0c;经常会拍很多漂亮的照片&#xff0c;这些照片可以收集起来做成相册&#xff0c;也可以制作成照片书&#xff0c;无论是当作礼物送给家人朋友&#xff0c;还是留着自己细细品味欣赏&#xff0c;都非常的有意义。 如今市面上制作翻页照片书的线上平…

ruoyi框架前端修改message消失时间

修改教程 打开modal.js文件&#xff0c;找到Message.success&#xff0c;然后把参数设置进去就行。单位是10001秒。 // 可以设置的参数如下export interface ElMessageOptions {/** Message text */message: string | VNode/** Message type */type?: MessageType/** Custom …

《C Primer Plus(第6版)》中文版PDF电子版下载(免费)

作者&#xff1a;史蒂芬普拉达&#xff08;Stephen Prata&#xff09;[美]译者&#xff1a;姜佑出版社&#xff1a;人民邮电出版社出版时间&#xff1a;2019年11月01日页码&#xff1a;541总字数&#xff1a;107.6W 这是一本经典的 C 语言书籍&#xff0c;至今已经迭代了 6 个…

java基础复习篇

目录 java 1、Java语言特点 2、JVM vs JDK vs JRE 3、基本数据类型 8种 4、重载和重写区别 5、构造方法有哪些特点&#xff1f;是否可以override 6、 接口和抽象类共同点和区别 7、 和 equals 区别 8、 String、StringBuffer、StringBuilder区别 9、字符串常量池 10、…

图傅里叶变换

目录 什么是图信号&#xff1f; 如何理解图信号的”谱“&#xff1f; 图傅里叶变换是什么&#xff1f; 图傅里叶变换中特征值和图信号的总变差有什么关系&#xff1f; 让我们先总结一下&#xff0c;我们想要把图信号 正交分解到一组基 上&#xff1b; 那么怎么得到&#x…

希亦T800 Pro双滚刷双活水洗地机发布:颠覆纯水洗,水汽混动技术的旗舰新杰作

11月1日&#xff0c;CEYEE希亦正式发布首款双滚刷双活水洗地机&#xff0c;集吸尘、洗拖、烘干于一体&#xff0c;双刷双喷淋一分钟洗地机1000次&#xff0c;可达10倍洁净效果&#xff01;该产品已正式在各大平台上开售&#xff0c;首发价2399元。 近年来&#xff0c;洗地机市…

优思学院|RCA(根本原因分析)四大步骤

在现代的制造业或者甚至是商业环境中&#xff0c;问题和突发事件不可避免地出现。 为了有效地解决这些问题并防止它们再次发生&#xff0c;根本原因分析&#xff08;RCA&#xff09;成为了至关重要的工具。 RCA是一种系统性的方法&#xff0c;涉及数据采集、因果图、根本原因…

5分+肿瘤预后模型生信分析如何做?单细胞分析+干湿结合

今天给同学们分享一篇单细胞分析干湿结合的生信文章“Tumor-associated endothelial cell prognostic risk model and tumor immune environment modulation in liver cancer based on single-cell and bulk RNA sequencing: Experimental verification”&#xff0c;这篇文章于…

139.单词拆分 多重背包理论 打家劫舍 I II III

139.单词拆分 题目 给一个非空字符串s&#xff0c;和一个非空单词集 wordDict&#xff0c;判断可不可以用空格把s分为wordDict里的一个或多个单词&#xff08;必须全部拆成单词才返回ture&#xff09;。 &#xff08;可以重复拆分为单词集的同个单词&#xff0c;默认单词集没…

天线测试解决方案-毫米波片上天线测量系统

毫米波片上天线测量系统 方案概述&#xff1a; 毫米波片上天线测量系统频率范围覆盖8GHz&#xff5e;110GHz&#xff08;可扩展至500GHz&#xff09;&#xff0c;具有频率覆盖范围宽、动态范围大、馈电形式灵活、结构紧凑、测试参数全面等特点。系统采用通用化、模块化设计思想…

设计模式(23)解释器模式

一、介绍&#xff1a; 1、定义&#xff1a;解释器(Interpreter)模式是一种对象的行为模式。给定一个语言&#xff0c;定义它的文法的一种表示&#xff0c;并定义一个解释器&#xff0c;这个解释器使用该表示来解释语言中的句子。 2、组成结构&#xff1a; &#xff08;1&…

SaaS 出海,如何搭建国际化服务体系?(二)

防噎指南&#xff1a;这可能是你看到的干货含量最高的 SaaS 出海经验分享&#xff0c;请准备好水杯&#xff0c;放肆食用&#xff08;XD。 当越来越多中国 SaaS 企业选择开启「国际化」副本&#xff0c;出海便俨然成为国内 SaaS 的新角斗场。 LigaAI 观察到&#xff0c;出海浪…

企业工程项目管理系统源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)==

工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&am…

html用css grid实现自适应四宫格放视频

想同时播放四个本地视频&#xff1a; 四宫格&#xff1b;自式应&#xff0c;即放缩浏览器时&#xff0c;四宫格也跟着放缩&#xff1b;尽量填满页面&#xff08;F11 浏览器全屏时可以填满整个屏幕&#xff09;。 在 html 中放视频用 video 标签&#xff0c;参考 [1]&#xff1…

linux的环境安装以及部署前后端分离后台接口

⭐⭐ linux专栏&#xff1a;linux专栏 ⭐⭐ 个人主页&#xff1a;个人主页 目录 一.linux安装环境 1.1 jdk和tomcat的安装配置 1.1.1 解压jdk和tomcat的安装包 解压jdk安装包 解压tomcat安装包 1.2 jdk环境变量配置 1.3 tomcat启动 1.4 MySQL的安装 二.部署前后端分离…

多通道振弦数据记录仪在铁路隧道监测中的重要应用

多通道振弦数据记录仪在铁路隧道监测中的重要应用 岩土工程监测是工程建设中不可或缺的一环&#xff0c;特别是在铁路隧道工程中更是如此。为此&#xff0c;振弦数据记录仪成为了一种非常重要的仪器&#xff0c;可以帮助监测人员实时监测隧道内部的变化&#xff0c;为工程的安…