• 【神经网络结构可视化】PlotNeuralNet的安装、测试及创建自己的神经网络结构可视化图形



    前提准备

    1、下载MikTeX

    下载链接: MikTeX ( https://miktex.org/download )
    在这里插入图片描述


    2、下载Git bash

    下载链接: Git bash ( https://git-scm.com/download/win )
    在这里插入图片描述


    3、下载PlotNeuralNet

    下载链接: PlotNeuralNet ( https://github.com/HarisIqbal88/PlotNeuralNet?tab=readme-ov-file )
    在这里插入图片描述


    进行测试

    1、解压PlotNeuralNet-master.zip

    将下载的PlotNeuralNet-master.zip解压到当前文件夹,并把解压的PlotNeuralNet-master文件夹更名为PlotNeuralNet。PlotNeuralNet文件夹里的文件如下:
    在这里插入图片描述


    2、打开Git bash

    • 在PlotNeuralNet文件夹里空白处右击鼠标,找到Git Bash Here,点击进入。如下图所示:
      在这里插入图片描述
    • 输入以下命令在PlotNeuralNet文件夹创建一个新的文件夹my_project:
      mkdir my_project
    • 输入以下命令将Git bash 里的路径切换到文件夹my_project:
      cd my_project
    • 输入以下命令使用vim编写my_arch.py:
      vim my_arch.py
      在这里插入图片描述
    • 将以下代码复制进去
    import sys
    sys.path.append('../')
    from pycore.tikzeng import *
    
    # defined your arch
    arch = [
        to_head( '..' ),
        to_cor(),
        to_begin(),
        to_Conv("conv1", 512, 64, offset="(0,0,0)", to="(0,0,0)", height=64, depth=64, width=2 ),
        to_Pool("pool1", offset="(0,0,0)", to="(conv1-east)"),
        to_Conv("conv2", 128, 64, offset="(1,0,0)", to="(pool1-east)", height=32, depth=32, width=2 ),
        to_connection( "pool1", "conv2"),
        to_Pool("pool2", offset="(0,0,0)", to="(conv2-east)", height=28, depth=28, width=1),
        to_SoftMax("soft1", 10 ,"(3,0,0)", "(pool1-east)", caption="SOFT"  ),
        to_connection("pool2", "soft1"),
        to_end()
        ]
    
    def main():
        namefile = str(sys.argv[0]).split('.')[0]
        to_generate(arch, namefile + '.tex' )
    
    if __name__ == '__main__':
        main()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 代码复制完后,按Esc键,然后再按:wq后回车保存退出。
      在这里插入图片描述
    • 执行以下命令
      bash ../tikzmake.sh my_arch
      在这里插入图片描述
    • 宏包安装
      在弹出的窗口界面安装宏包
      在这里插入图片描述
      【可能的报错】
      如果在Git bash 中输出以下报错:
      ! LaTeX Error: File ’import.sty‘ not found. Type X to quit or to proceed, or enter new name. (Default extension: sty) Enter file name:
      【解决方式】
      1、直接关闭Git bash
      2、找到并打开MikTex Console
      在这里插入图片描述
      3、按下图进行操作
      在这里插入图片描述
      4、执行以下命令
      bash ../tikzmake.sh my_arch
      在这里插入图片描述

    3、 在my_project中查看生成的pdf文件

    在这里插入图片描述
    在这里插入图片描述


    创建自己的神经网络结构可视化图形

    找到pyexamples文件夹下的test_simple.py或unet.py文件,更改defined your arch部分,运行代码后会生成一个.tex文件,运行.tex文件即可得到自己的可视化模型的pdf文件。
    test_simple.py中的defined your arch部分:

    # defined your arch
    arch = [
        to_head( '..' ),
        to_cor(),
        to_begin(),
        to_Conv("conv1", 512, 64, offset="(0,0,0)", to="(0,0,0)", height=64, depth=64, width=2 ),
        to_Pool("pool1", offset="(0,0,0)", to="(conv1-east)"),
        to_Conv("conv2", 128, 64, offset="(1,0,0)", to="(pool1-east)", height=32, depth=32, width=2 ),
        to_connection( "pool1", "conv2"), 
        to_Pool("pool2", offset="(0,0,0)", to="(conv2-east)", height=28, depth=28, width=1),
        to_SoftMax("soft1", 10 ,"(3,0,0)", "(pool1-east)", caption="SOFT"  ),
        to_connection("pool2", "soft1"),    
        to_Sum("sum1", offset="(1.5,0,0)", to="(soft1-east)", radius=2.5, opacity=0.6),
        to_connection("soft1", "sum1"),
        to_end()
        ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    unet.py中的defined your arch部分:

    arch = [ 
        to_head('..'), 
        to_cor(),
        to_begin(),
        
        #input
        to_input( '../examples/fcn8s/cats.jpg' ),
    
        #block-001
        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_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 ),
    
        #Bottleneck
        #block-005
        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"),
    
        #Decoder
        *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() 
        ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
  • 相关阅读:
    MATLAB|风玫瑰图
    TRC神经科学丨艾美捷TRC成瘾研究领域
    ceph分布式存储部署
    C++:征服C指针:指针(二)
    Collectors.toMap()方法——Java8
    新手想开一个传奇该如何操作?开一个传奇必须掌握哪些知识要点
    MySQL-内置函数
    [附源码]Python计算机毕业设计SSM健身网站平台(程序+LW)
    (十)Jmeter操作数据库/INSERT数据/读取CSV数据/bean shell使用
    【DockerCE】Docker-CE 20.10.18正式版发布
  • 原文地址:https://blog.csdn.net/qq_62573714/article/details/138156462