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

plotneuralnet和netron结合绘制模型架构图

plotneuralnet和netron结合绘制模型架构图

一、plotneuralnet 本身的操作

模型结构图的可视化,能直观展示模型的结构以及各个模块之间的关系。最近借助plotneuralnet python库(windows版)绘制了一个网络结构图,有一些经验和心得记录在这里。

在这里插入图片描述
这个库里贴心地给了许多的示例,用于理解代码的含义并表达自己的意思。
每一种模块都有固定的几个参数,多数不难理解,重点是理解其中的两个,s_filer和n_filer。
如果input是(512,512,4),s_filer对应两个512,代表了图形的height和depth(也是参数),n_filer对应4,代表了图形的width。
需要注意的是两者的尺度不一样,在s_filer中,如果512对应40,256对应32,128对应25等,而在n_filer中,512对应的width值是7左右,256对应的是6等等, 这样图形看起来就是例子中“树立的扁扁的方块”。

二、获取模型各个部分的输入和输出尺寸

绘图部分有了着落之后,还要获得网络各个部分的输入和输出的尺寸,可以用netron这个网站和他的Python库来实现,站内也有介绍。

这样数据和绘图部分都有了着落,就可以实现绘图啦。

附:生成文中图的代码

import sys
sys.path.append('../')
from pycore.tikzeng import *
from pycore.blocks  import *'''
s_filer对应height和depth,之间的对应关系:512-40,256-32,128-25,64-16;
n_filer对应width,之间的对应关系:256-6,128-5.5,64-4.5,32-3.5,16-2.5,4-1.5'''arch = [ to_head('..'), to_cor(),to_begin(),#inputto_input( 'demo.jpg',to='(-3,0,0)',name="input_b1" ),#block-001to_ConvConvRelu( name='ccr_b1', s_filer=512, n_filer=(16,16), offset="(0,0,0)", to="(0,0,0)", width=(2.5,2.5), height=40, depth=40,caption="Stem Block"),to_Pool(name="pool_b1", offset="(0,0,0)", to="(ccr_b1-east)", width=1, height=30, depth=30, opacity=0.5),*block_2ConvPool( name='b2', botton='pool_b1', top='pool_b2', s_filer=256, n_filer=32, offset="(1,-8,0)", size=(32,32,3.5), opacity=0.5 ),*block_2ConvPool( name='b3', botton='pool_b2', top='pool_b3', s_filer=128, n_filer=64, offset="(1,-8,0)", size=(25,25,4.5), opacity=0.5 ),*block_2ConvPool( name='b4', botton='pool_b3', top='pool_b4', s_filer=64,  n_filer=128, offset="(1,-8,0)", size=(16,16,5.5), opacity=0.5 ),#Bottleneck#block-005to_Conv( name='conv1_aspp', s_filer=64, n_filer=256, offset="(2,0,0)", to="(pool_b4-east)", width=6, height=16, depth=16 ),to_connection( "pool_b4", "conv1_aspp"),to_Conv( name='conv2_aspp', s_filer=64, n_filer=256, offset="(0,-1,0)", to="(conv1_aspp-east)", width=6, height=16, depth=16),to_connection( "pool_b4", "conv2_aspp"),to_Conv( name='conv3_aspp', s_filer=64, n_filer=256, offset="(0,-1,0)", to="(conv2_aspp-east)", width=6, height=16, depth=16  ),to_connection( "pool_b4", "conv3_aspp"),to_Conv( name='conv4_aspp', s_filer=64, n_filer=256, offset="(0,-1,0)", to="(conv3_aspp-east)", width=6, height=16, depth=16 ),to_connection( "pool_b4","conv4_aspp"),to_Sum(name='sum_aspp',offset="(2,3,0)",to="(conv4_aspp-east)",radius=3.5,opacity=0.6),to_connection('conv1_aspp','sum_aspp'),to_connection('conv2_aspp','sum_aspp'),to_connection('conv3_aspp','sum_aspp'),to_connection('conv4_aspp','sum_aspp'),to_Conv( name='conv5_aspp', s_filer=64, n_filer=256, offset="(2,0,0)", to="(sum_aspp-east)", width=6, height=16, depth=16 ),to_connection( "sum_aspp", "conv5_aspp"),#Decoder*block_Unconv( name="b6", botton="conv5_aspp", top='end_b6', s_filer=64,  n_filer=256, offset="(2.1,0,0)", size=(16,16,6.0), opacity=0.5 ),to_skip( of='ccr_b4', to='ccr_res_b6', pos=1.25),*block_Unconv( name="b7", botton="end_b6", top='end_b7', s_filer=128, n_filer=128, offset="(2.1,8,0)", size=(25,25,5.5), opacity=0.5 ),to_skip( of='ccr_b3', to='ccr_res_b7', pos=1.25),    *block_Unconv( name="b8", botton="end_b7", top='end_b8', s_filer=256, n_filer=64, offset="(2.1,8,0)", size=(32,32,4.5), opacity=0.5 ),to_skip( of='ccr_b2', to='ccr_res_b8', pos=1.25),    *block_Unconv( name="b9", botton="end_b8", top='end_b9', s_filer=512, n_filer=32,  offset="(2.1,8,0)", size=(40,40,3.5), opacity=0.5 ),to_skip( of='ccr_b1', to='ccr_res_b9', pos=1.25),#aspp# to_ConvConvRelu( name='b10', s_filer=512, n_filer=(16,16), offset="(2,0,0)", to="(end_b9-east)", width=(2.5,2.5), height=40, depth=40, caption="ASSP"  ),to_Conv( name='conv1_aspp2', s_filer=512, n_filer=16, offset="(2,0,0)", to="(end_b9-east)", width=2.5, height=40, depth=40 ),to_connection( "end_b9", "conv1_aspp2"),to_Conv( name='conv2_aspp2', s_filer=512, n_filer=16, offset="(0,-1,0)", to="(conv1_aspp2-east)", width=2.5, height=40, depth=40),to_connection( "end_b9", "conv2_aspp2"),to_Conv( name='conv3_aspp2', s_filer=512, n_filer=16, offset="(0,-1,0)", to="(conv2_aspp2-east)", width=2.5, height=40, depth=40  ),to_connection( "end_b9", "conv3_aspp2"),to_Conv( name='conv4_aspp2', s_filer=512, n_filer=16, offset="(0,-1,0)", to="(conv3_aspp2-east)", width=2.5, height=40, depth=40 ),to_connection( "end_b9","conv4_aspp2"),to_Sum(name='sum_aspp2',offset="(2,3,0)",to="(conv4_aspp2-east)",radius=3.5,opacity=0.6),to_connection('conv1_aspp2','sum_aspp2'),to_connection('conv2_aspp2','sum_aspp2'),to_connection('conv3_aspp2','sum_aspp2'),to_connection('conv4_aspp2','sum_aspp2'),to_Conv( name='conv5_aspp2', s_filer=512, n_filer=16, offset="(2,0,0)", to="(sum_aspp2-east)", width=2.5, height=40, depth=40 ),to_connection( "sum_aspp2", "conv5_aspp2"),to_Conv( name='b10', s_filer=512, n_filer=16, offset="(2,0,0)", to="(conv5_aspp2-east)", width=2.5, height=40, depth=40 ),to_connection( "conv5_aspp2", "b10"),to_Conv( name='b11', s_filer=512, n_filer=4, offset="(2,0,0)", to="(b10-east)", width=1.5, height=40, depth=40 ),to_connection( "b10", "b11"), to_ConvSoftMax( name="soft1", s_filer=512, offset="(0.75,0,0)", to="(b11-east)", width=1, height=40, depth=40, caption="SOFT" ),to_connection( "b11", "soft1"),to_input( 'mask.png',to='(64,0,0)',name="output" ),to_end() ]def main():namefile = str(sys.argv[0]).split('.')[0]to_generate(arch, namefile + '.tex' )if __name__ == '__main__':main()

相关文章:

plotneuralnet和netron结合绘制模型架构图

plotneuralnet和netron结合绘制模型架构图 一、plotneuralnet 本身的操作 模型结构图的可视化,能直观展示模型的结构以及各个模块之间的关系。最近借助plotneuralnet python库(windows版)绘制了一个网络结构图,有一些经验和心得…...

MYSQL 中如何导出数据?

文章目录 前言MySQL 导出数据使用 SELECT ... INTO OUTFILE 语句导出数据SELECT ... INTO OUTFILE 语句有以下属性:导出表作为原始数据导出SQL格式的数据将数据表及数据库拷贝至其他主机 后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:…...

GPT-4惨遭削弱,偷懒摸鱼绝不多写一行代码,OpenAI已介入调查

GPT-4再次遭网友“群攻”,原因是“懒”得离谱! 有网友想在Android系统开发一个能够与OpenAI API实时交互的应用。 于是把方法示例链接发给GPT-4,让它参考用Kotlin语言编写代码: 没成想,和GPT-4一来二去沟通半天,GPT-4死活给不出…...

CSS特效020:涌动的弹簧效果

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧,主要包含CSS布局,CSS特效,CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点,CSS特效主要是一些动画示例,CSS花边是描述了一些CSS…...

系列五、Spring整合MyBatis不忽略mapper接口同目录的xxxMapper.xml

一、概述 默认情况下maven要求我们将xml配置、properties配置等都放在resources目录下,如果我们强行将其放在java目录,即将xxxMapper.xml和xxxMapper接口放在同一个目录下,那么默认情况下maven打包时会将这个xxxMapper.xml文件忽略掉&#xf…...

第454题.四数相加II

力扣题目链接 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0 分析&#xff1a; 当需要判断一个元素是…...

RabbitMQ消息队列

简介 MQ(message queue)&#xff0c;从字面意思上看就个 FIFO 先入先出的队列&#xff0c;只不过队列中存放的内容是 message 而已&#xff0c;它是一种具有接收数据、存储数据、发送数据等功能的技术服务。 作用&#xff1a;流量削峰、应用解耦、异步处理。 生产者将消息发送…...

ModBus电表与RS485电表有哪些区别?

在能源计量领域&#xff0c;ModBus电表和RS485电表是两种常见的设备&#xff0c;它们都具有监测和记录电能数据的功能。然而&#xff0c;它们之间存在一些区别&#xff0c;比如通信协议、连接方式、数据格式等等参数的区别有哪些&#xff1f; ModBus电表和RS485电表都是用于电能…...

vue项目运行时,报错:ValidationError: webpack Dev Server Invalid Options

在运行vue项目中&#xff0c;遇到报错&#xff1a;ValidationError: webpack Dev Server Invalid Options&#xff0c;如下图截图&#xff1a; 主要由于vue.config.js配置文件错误导致的&#xff0c;具体定位到proxy配置代理不能为空&#xff0c;导致运行项目报错&#xff0c;需…...

书摘:C 嵌入式系统设计模式 02

本书的原著为&#xff1a;《Design Patterns for Embedded Systems in C ——An Embedded Software Engineering Toolkit 》&#xff0c;讲解的是嵌入式系统设计模式&#xff0c;是一本不可多得的好书。 本系列描述我对书中内容的理解。 结构化编程将软件组织成两个截然不同的…...

排序算法基本原理及实现1

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 &#x1f4d1;插入排序 &#x1f4…...

Unity 轨道展示系统(DollyMotion)

DollyMotion &#x1f371;功能展示&#x1f959;使用&#x1f4a1;设置路径点&#x1f4a1;触发点位切换&#x1f4a1;动态更新路径点&#x1f4a1;事件触发&#x1f4a1;设置路径&#x1f4a1;设置移动方案固定速度方向最近路径方向 &#x1f4a1;设置移动速度曲线 传送门 &a…...

优维低代码实践:搜索功能

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 优维…...

C# ReadOnlyRef Out

C# ReadOnly ReadOnly先看两种情况1.值类型2.引用类型 结论 Ref Out ReadOnly官方文档 ReadOnly 先看两种情况 1.值类型 当数据是值类型时&#xff0c;标记为Readonly时&#xff0c;如果再次设置值&#xff0c;会提示报错&#xff0c;无法分配到只读字段 public class A {pri…...

linux 服务 下 redis 安装和 启动

官网下载 https://redis.io/download/ 安装步骤&#xff1a; 1.安装redis 所需要的依赖 yum install -y gcc tcl2.上传安装包并解压&#xff0c;下载安装包&#xff0c;上传到/usr/local/src目录&#xff0c;解压 tar -zxvf redis-7.2.3.tat.gz进入安装目录&#xff0c;运行…...

ECharts与Excel的结合实战

引言&#xff1a;本文是一篇ECharts和Excel实战的记录。将Excel与ECharts产生火花&#xff0c;从Excel读取数据然后在ECharts上展示。 1.柱状图前端代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title…...

UDP的特点及应用场景

目录 UDP特点 应用场景 总结 User Datagram Protocol&#xff08;UDP&#xff0c;用户数据报协议&#xff09;是互联网协议套件中的一种传输层协议。与TCP不同&#xff0c;UDP是一种无连接的、不可靠的协议。 UDP特点 要知道UDP可以用来做什么&#xff0c;首先我们要知道它…...

Python开发——工具篇 Pycharm的相关配置,Python相关操作 持续更新

前言 本篇博客是python开发的工具篇相关&#xff0c;介绍pycharm的使用和相关配置&#xff0c;收录python的相关操作&#xff0c;比如如何启动jupyter。 目录 前言引出Pycharmpycharm如何不同等级日志显示不同颜色设置不同pycharm的python环境 Python操作如何启动Jupyter 总结…...

【深度学习】卷积神经网络结构组成与解释

卷积神经网络是以卷积层为主的深度网路结构&#xff0c;网络结构包括有卷积层、激活层、BN层、池化层、FC层、损失层等。卷积操作是对图像和滤波矩阵做内积&#xff08;元素相乘再求和&#xff09;的操作。 1. 卷积层 常见的卷积操作如下&#xff1a; 卷积操作解释图解标准卷…...

从源码解析Containerd容器启动流程

从源码解析Containerd容器启动流程 本文从源码的角度分析containerd容器启动流程以及相关功能的实现。 本篇containerd版本为v1.7.9。 更多文章访问 https://www.cyisme.top 本文从ctr run命令出发&#xff0c;分析containerd的容器启动流程。 ctr命令 查看文件cmd/ctr/comman…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...