深度学习网络结构图绘制工具及方法

推荐5款好用的深度学习框架绘制工具https://zhuanlan.zhihu.com/p/531619117?utm_id=0

1.Diagram

亮点:diagrams.net (以前称为draw.io)是一个免费的拖放式在线图表工具,使用无代码 http://diagrams.net 工具通过图表可视化绘制深度学习模型,允许用户创建流程图、生成网络和实体关系 (ER) 图,甚至设计数据库模式。包括其易用性以及与 GitHub、OneDrive 和 Google Drive 等常见平台的无缝集成

面板

使用教程diagrams画图保姆级教程_哔哩哔哩_bilibili

2.Inkscape

亮点:基于免费矢量的图像编辑器,Inkscape 是可以安装在 Apple、Windows 或 GNU/Linux 设备上的专用软件。 由于它允许设计的图表数量,从地图到徽标,初学者和专家的选择。

chrisolah 大佬用来描述 LSTM

使用教程Inkscape使用教程_哔哩哔哩_bilibili

3.PlotNeuralNet

亮点:脚本化,使用LaTex编写或者使用Python脚本编写结构模型,自由度高(直接网络结构代码生成可视化图,真香)。很多论文的插图就是使用这个工具可视化的。

代码2-unet.py

  import sys
  sys.path.append('../')
  from pycore.tikzeng import *
  from pycore.blocks  import *
  
  arch = [ 
      # 开头
      to_head('..'), 
      to_cor(),
      to_begin(),
      
      # 添加输入层
      to_input( '../examples/fcn8s/cats.jpg' ),
  
      #  添加block1包含一个二重卷积接relu
      to_ConvConvRelu( name='ccr_b1', s_filer=500, n_filer=(64,64), offset="(0,0,0)", to="(0,0,0)", width=(2,2), height=40, depth=40  ),
      to_Pool(name="pool_b1", offset="(0,0,0)", to="(ccr_b1-east)", width=1, height=32, depth=32, opacity=0.5),
      #  添加三个block,每个包含三个二卷积加一池化
      *block_2ConvPool( name='b2', botton='pool_b1', top='pool_b2', s_filer=256, n_filer=128, offset="(1,0,0)", size=(32,32,3.5), opacity=0.5 ),
      *block_2ConvPool( name='b3', botton='pool_b2', top='pool_b3', s_filer=128, n_filer=256, offset="(1,0,0)", size=(25,25,4.5), opacity=0.5 ),
      *block_2ConvPool( name='b4', botton='pool_b3', top='pool_b4', s_filer=64,  n_filer=512, offset="(1,0,0)", size=(16,16,5.5), opacity=0.5 ),
  
      #  瓶颈,为block5
      to_ConvConvRelu( name='ccr_b5', s_filer=32, n_filer=(1024,1024), offset="(2,0,0)", to="(pool_b4-east)", width=(8,8), height=8, depth=8, caption="Bottleneck"  ),
      to_connection( "pool_b4", "ccr_b5"),
  
      # 解码器
      #  多个block,每个为unconv
      *block_Unconv( name="b6", botton="ccr_b5", top='end_b6', s_filer=64,  n_filer=512, offset="(2.1,0,0)", size=(16,16,5.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=256, offset="(2.1,0,0)", size=(25,25,4.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=128, offset="(2.1,0,0)", size=(32,32,3.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=64,  offset="(2.1,0,0)", size=(40,40,2.5), opacity=0.5 ),
      to_skip( of='ccr_b1', to='ccr_res_b9', pos=1.25),
      
      to_ConvSoftMax( name="soft1", s_filer=512, offset="(0.75,0,0)", to="(end_b9-east)", width=1, height=40, depth=40, caption="SOFT" ),
      to_connection( "end_b9", "soft1"),
      #  结束
      to_end() 
      ]
  
  def main():
      namefile = str(sys.argv[0]).split('.')[0]
      to_generate(arch, namefile + '.tex' )
  if __name__ == '__main__':
      main()
      

运行:python 2-unet.py 即可生成:

u-net网络结构

使用教程使用PlotNeuralNet绘制深度学习网络图

4.PPT

亮点:上手快,便于操作

ppt画图

使用教程:ppt画深度学习网络图_哔哩哔哩

5.Visio

亮点:Visio更适合新手上手,绘制复杂项目的流程图和线框,因为更赞的模板;更丰富的共享组件、布局;更便利的多人协作(利用library)

Visio画图

使用教程用Visio绘制神经网络结构图_哔哩哔哩

为了绘制UNet网络模型,可以使用Python中的`torchviz`库来生成计算图。以下是具体步骤: 1. 安装`torchviz`库(如果尚未安装): ```bash pip install torchviz ``` 2. 使用以下代码绘制UNet网络模型: ```python import torch import torch.nn as nn from torchviz import make_dot # 定义UNet模型 class UNet(nn.Module): def __init__(self): super(UNet, self).__init__() self.encoder = nn.Sequential( nn.Conv2d(3, 64, kernel_size=3, stride=1, padding=1), nn.ReLU(), nn.MaxPool2d(kernel_size=2, stride=2), nn.Conv2d(64, 128, kernel_size=3, padding=1), nn.ReLU(), nn.MaxPool2d(2), ) self.decoder = nn.Sequential( nn.ConvTranspose2d(128, 64, kernel_size=2, stride=2), nn.ReLU(), nn.ConvTranspose2d(64, 3, kernel_size=2, stride=2), nn.Sigmoid(), ) def forward(self, x): x = self.encoder(x) x = self.decoder(x) return x # 创建模型实例 model = UNet() # 创建一个随机输入张量 x = torch.randn(1, 3, 256, 256) # 获取模型输出并绘制计算图 y = model(x) dot = make_dot(y, params=dict(model.named_parameters())) # 保存或显示计算图 dot.render("unet_model", format="png") dot.view() ``` 上述代码将生成一个名为`unet_model.png`的文件,并在默认图像查看器中打开它。这个文件展示了UNet网络的结构和计算流程。 ### 解释 1. **定义UNet模型**:我们定义了一个简单的UNet模型,包括编码器和解码器部分。 2. **创建模型实例**:实例化UNet模型。 3. **创建随机输入张量**:生成一个形状为`(1, 3, 256, 256)`的随机输入张量,模拟一批次的输入数据。 4. **获取模型输出**:通过模型前向传播得到输出。 5. **绘制计算图**:使用`make_dot`函数生成计算图,并保存为PNG格式的文件。 6. **保存或显示计算图**:使用`render`方法保存图形文件,并使用`view`方法在默认图像查看器中打开它。 这样,你就可以直观地看到UNet网络的结构和各个层之间的连接关系。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值