当前位置: 首页 > 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…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...