前言
- 网络可视化的目的一般是检查网络结构的设计是否合理,同时观察输入数据在网络中的变化规律是否符合预期,基于此进行调整。
- 目前网络可视化的方法非常多,但其中实用的并不多,或者有些方法只适合特定网络,对于自定义网络结构并不友好。
- 经过学习和验证,个人整理发现有7种网络可视化方法相对较好,新手推荐结合方法1和方法5来使用,简单易上手。
- 建议在 Anaconda 中单独创建一个环境专门用来显示网络结构和查看网络参数等,因为一些方法安装的时候必须做好版本匹配,可以在新环境里安装其他版本的 torch 和 torchvision 。

1. torchsummary
torchsummary 会输出网络模型的过程层结构,层参数和总参数等信息。对于大多数新手和炼丹师关注具体的层间参数信息没有太大意义,torchsummary 可以很方便地用来获取网络参数量和输出模型大小,效果如下图,具体使用方法见 pytorch 网络模型可视化(一):torchsummary。

2. graphviz + torchviz
该方法需要同时安装两个包 torchviz 和 graphviz 和一个软件 Graphviz,输出的网络结构不够直观,适合关注网络内部细节的人学习,输出的网络结构图是应该是跟踪反向传播得到的,因此是倒着的,具体的安装和使用方法见链接 pytorch 网络模型可视化(二):graphviz + torchviz。

3. Jupyter Notebook + tensorwatch
该方法需要使用 Jupyter Notebook 来实现,这个软件使用和学习是非常简单的,主要存在的问题是各安装包之间版本的匹配和 Jupyter Notebook 中 python 解释器的配置,输出的网络结构图比较直观,细节也相对丰富。具体是安装和使用方法见链接 pytorch 网络模型可视化(三):Jupyter Notebook + tensorwatch。

4. tensorboardX
tensorboardX 的使用比较简单,功能也比较丰富,但安装的时候必须做好版本匹配,否则会出现许多错误。tensorboardX 输出的网络结构需要在浏览器中查看,相对来说不太好看,但细节比较丰富。具体的使用和安装方法见链接 pytorch 网络模型可视化(四):tensorboardX。

5. netron
强烈推荐的一种方法。netron 有 python 包,netron 软件,netron 在线版三种方法来查看网络结构,一般使用 netron 的 python 包查看网络结构就足够。netron 会在浏览器里输出网络结构,可以在浏览器里对其进行导出,简可以说是好看又实用。具体的安装和实用方法见链接 pytorch 网络模型可视化(五):netron。

6. hiddenlayer
hiddenlayer 也是比较实用的一种网络可视化方法,功能也相对比较多,问题就是必须做好版本间匹配,否则会报很多错。具体的使用和安装方法见链接 pytorch 网络模型可视化(六):hiddenlayer。

7. PlotNeuralNet
严格说这其实不是一款网络可视化工具,仅仅是一个画图工具。是利用 python 代码自定义网络结构转为 tex 代码出图的,注意这里的网络结构与自己要训练或者测试的网络结构没有半点关系。PlotNeuralNet 上手难度较大,而且只能针对简单网络结构画图,对于复杂的网络结构是极其不实用的。具体的安装和使用方法见链接 pytorch 网络模型可视化(七):PlotNeuralNet。

结语
没有最好的方法,只有最适合的方法。相信在这7中网络可视化方法中总有最适合你的,最后祝大家在炼丹一道越走越远。
|