pytorch 网络模型可视化(七):PlotNeuralNet

引导

PlotNeuralNet 介绍

PlotNeuralNet 是 github 上做神经网络可视化的一个工具,利用 python 将 .py 文件中定义的网络结构转换成 .tex 文件,最后通过 TeXworks 等工具可以将其转换为 .pdf 等形式来显示网络结构。

1. 安装 Texlive

点击 http://www.tug.org/texlive/ 进入下载链接,选择 on DVD。

pytorch 网络模型可视化(七):PlotNeuralNet
选择 downloading the TeX Live ISO image and burning your own DVD。

pytorch 网络模型可视化(七):PlotNeuralNet
选择 downloading from a nearby CTAN mirror。

pytorch 网络模型可视化(七):PlotNeuralNet
选择 texlive2021.iso 进行下载

pytorch 网络模型可视化(七):PlotNeuralNet

下载得到一个 iso 映像文件,双击打开,再双击 install-tl-windows.bat 文件进入安装向导,注意修改安装路径,勾选安装 TeXworks 前端选项,然后就是漫长的等待安装过程。

pytorch 网络模型可视化(七):PlotNeuralNet

2. 下载 PlotNeuralNet 工具包

github 链接:https://github.com/HarisIqbal88/PlotNeuralNet

3. 运行自带测试代码

用 pycharm 或者别的 python 编辑器打开 PlotNeuralNet 工程,进入到 pyexamples 路径下,打开 unet.py 文件直接运行。此时会在当前路径下生成一个 unet.tex 文件。

pytorch 网络模型可视化(七):PlotNeuralNet
打开 TeXworks editor 软件,选择文件打开刚开路径下的 unet.tex 文件。

pytorch 网络模型可视化(七):PlotNeuralNet
点击绿色箭头运行,会直接生成并打开一个 unet.pdf 文件,如果显示不完整可以点击适应页面或者将窗口放大,结果如下。

pytorch 网络模型可视化(七):PlotNeuralNet
可以看出输出的网络图非常好看,每一层的 H,W,C 也都是自己可以定义的。

4. 运行自定义测试代码

PlotNeuralNet 的一个弊端就是它是用户利用代码来直接生成并定义的,操作难度较高,其实也不大实用,但在制作论文插图的时候是比较好的。下来通过一个自定义的测试代码来简单介绍使用方法(类似 U-Net):

import sys
sys.path.append('../')
from pycore.tikzeng import *
# 自定义一个网络结构
arch = [
    to_head('..'),
    to_cor(),
    to_begin(),

    # 写入网络结构,其他代码不要改动
    to_Conv("conv1", 64, 3, offset="(0,0,0)", to="(0,0,0)", height=128, depth=128, width=3),
    # 参数列表:名字;左下角数字大小和厚度;相对于上一幅图的 x,y,z 坐标;对应放在 conv1 的 东(右边)边;高度;宽度;厚度
    to_Conv("conv2", 64, 32, offset="(5,0,0)", to="(conv1-east)", height=64, depth=64, width=32),
    to_Conv("conv3", 64, 32, offset="(5,0,0)", to="(conv2-east)", height=32, depth=32, width=64),
    to_Conv("conv4", 64, 32, offset="(5,0,0)", to="(conv3-east)", height=16, depth=16, width=128),
    to_Conv("conv5", 64, 32, offset="(5,0,0)", to="(conv4-east)", height=16, depth=16, width=128),
    to_Conv("conv6", 64, 32, offset="(5,0,0)", to="(conv5-east)", height=32, depth=32, width=64),
    to_Conv("conv7", 64, 32, offset="(5,0,0)", to="(conv6-east)", height=64, depth=64, width=32),
    to_Conv("conv8", 64, 3, offset="(5,0,0)", to="(conv7-east)", height=128, depth=128, width=3),
    # 箭头连接
    to_connection("conv1", "conv2"),
    to_connection("conv2", "conv3"),
    to_connection("conv3", "conv4"),
    to_connection("conv4", "conv5"),
    to_connection("conv5", "conv6"),
    to_connection("conv6", "conv7"),
    to_connection("conv7", "conv8"),
    # 跳跃连接
    to_skip("conv2", "conv7"),

    to_end()
    ]


def main():
    namefile = str(sys.argv[0]).split('.')[0]
    to_generate(arch, namefile + '.tex')


if __name__ == '__main__':
    main()

运行结果:

pytorch 网络模型可视化(七):PlotNeuralNet

5. 结语

  • 一般情况下我们查看自定义网络的结构,主要还是查看一些模块间连接方式,特征图变化,参数变化等,而 PlotNeuralNet 是一种完全脱离实际现有网络的工具,其中的一切参数都是自定义的。
  • 虽然 PlotNeuralNet 出的神经网络结构图相比其他工具要好看一些,但它上手的难度比较大,而且只有一些简单的连接等操作,遇到相对复杂的网络花费的时间远大于直接用作图软件画的时间。
  • 只能说可以在做论文插图的时候尝试一下,其他情况完全没必要,相信肯定有一些软件能画比 PlotNeuralNet 更漂亮的神经网络图。
上一篇:C#:数据库事务统一管理的解决方案


下一篇:深度学习网络模型的轻量化方法