PlotNeuralNet + ChatGPT创建专业的神经网络的可视化图形

简介: PlotNeuralNet:可以创建任何神经网络的可视化图表,并且这个LaTeX包有Python接口,我们可以方便的调用。

PlotNeuralNet:可以创建任何神经网络的可视化图表,并且这个LaTeX包有Python接口,我们可以方便的调用。

但是他的最大问题是需要我们手动的编写网络的结构,这是一个很麻烦的事情,这时 ChatGPT 就出来了,它可以帮我们生成LaTeX代码。在本文中,我将介绍如何安装和使用PlotNeuralNet,展示一些可视化示例,以及如何使用ChatGPT为我们生成LaTeX代码!

PlotNeuralNet

以下说明取来自PlotNeuralNet的说明,一下是ubuntu版

 #Ubuntu 16.04
 sudo apt-get install texlive-latex-extra
 
 #Ubuntu 18.04.2
 sudo apt-get install texlive-latex-base
 sudo apt-get install texlive-fonts-recommended
 sudo apt-get install texlive-fonts-extra
 sudo apt-get install texlive-latex-extra

windows的话需要下载并安装一个LaTeX编译器,比如MiKTeX。然后还要安装一个bash运行程序,比如Git自带的bash或Cygwin。

安装完成后我们就可以使用官方的样例了:

 cd pyexamples/
 bash ../tikzmake.sh test_simple

在Windows上,你可能会遇到一些错误。

../tikzmake.sh:第4行:python:命令未找到

这时需要打开tikzmake.sh文件,并根据Python版本在第4行、Python2或Python3上进行修改。

比如我这里要改成python3 $1.py而不是python $1.py。

../tikzmake.sh:第5行:pdflatex:命令未找到

此错误意味着与MikTeX安装相关的环境变量有问题。需要手动将pdflatex添加到环境变量中。

这个基本示例代码如下,我们简单的解释一下都是什么。

 importsys
 sys.path.append('../')
 frompycore.tikzengimport*
 
 # 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()
     ]
 
 defmain():
     namefile=str(sys.argv[0]).split('.')[0]
     to_generate(arch, namefile+'.tex' )
 
 if__name__=='__main__':
     main()

通过上面定义的结构,会成成tex的文件,LaTeX中的等效程序:

 \pic[shift={(0,0,0)}] at (0,0,0)
     {Box={
         name=conv1,
         caption= ,
         xlabel={{64, }},
         zlabel=512,
         fill=\ConvColor,
         height=64,
         width=2,
         depth=64
         }
     };
 
 \pic[shift={ (0,0,0) }] at (conv1-east)
     {Box={
         name=pool1,
         caption= ,
         fill=\PoolColor,
         opacity=0.5,
         height=32,
         width=1,
         depth=32
         }
     };
 
 \pic[shift={(1,0,0)}] at (pool1-east)
     {Box={
         name=conv2,
         caption= ,
         xlabel={{64, }},
         zlabel=128,
         fill=\ConvColor,
         height=32,
         width=2,
         depth=32
         }
     };
 
 \draw[connection]  (pool1-east)    -- node {\midarrow} (conv2-west);

编译成pdf文件如下:

这个可以根据你对Python或LaTeX的熟悉程度来选择,对我来说python更直观一些,所以我使用MiKTeX从Python指令生成LaTeX代码。

下面我们来看一看PlotNeuralNet生成复杂深度神经网络的可视化样例

1、U-Net

U-Net于图像分割任务。它首先由Olaf Ronneberger、Philipp Fischer和Thomas Brox在2015年的论文U-Net: Convolutional Networks for Biomedical Image Segmentation”中提出。

它的名字来源于它独特的“U”形。它允许更精确的分割。

2、VGG16

VGG16是一个卷积神经网络模型,使用ImageNet数据库中的100多万张图像进行训练。

这个模型是由牛津大学的视觉几何小组开发的。它在2014年ImageNet大规模视觉识别挑战赛(ILSVRC)中获得了图像分类和检测的顶级成绩。

它也是一个经典的网络

3、Alexnet

AlexNet是由Alex Krizhevsky、Ilya Sutskever和Geoffrey Hinton于2012年推出。它在2012年ImageNet大规模视觉识别挑战赛(ILSVRC)中以15.3%的错误率赢得前5名后声名大噪。事实上,这是第一个证明深度卷积神经网络对图像分类有效性的模型。

对于那些熟悉由Yann LeCun[4]提出的LeNet架构的人来说,AlexNet的架构是类似的。它只是每个卷积层和堆叠的卷积层有更多的过滤器。论文中还介绍了ReLU激活函数和dropout正则化的使用。

在PlotNeuralNet存储库中还有许多更复杂的示例(HED、SoftMaxLoss、FCN32……),这里就不一一介绍了。

ChatGPT

我们可以看到,在从Python脚本生成的LaTeX代码示例中,各个指令都是非常精确的,所以在开始编写代码之前,都需要对深度神经网络有一个非常清晰的概念。

但是如果我们不知道呢?那么就要靠ChatGPT来帮助我们生成Python或LaTeX代码。

1、ChatGPT生成LaTeX代码

ChatGPT知道LaTeX,但是在给出一个工作示例之前,它在生成代码时遇到了麻烦。所以为了让他生成可视化结构,我首先需要给了他FCN32或FCN8代码。

Here is some LaTeX code to generate an FCN 32 Network using the PlotNeuralNet latex package : […]

然后让他使用上面给出的例子来生成一个新的可视化。

Inspire yourself from this code and generate the LaTeX code to visualize a simple Convolutional Neural Network

根据chatgpt返回的代码,可视化效果如下

与官方例子中给出的FCN32作为示例相比,连接缺失了。并且在这个可视化过程中还缺少一些东西。

不知道是什么原因,ChatGPT犯了一个错误,它们的x_labels没有正确显示。

它生成了x_label={32}而不是x_label={"32","32"}。

需要我们手动修复它,会得到下面的可视化结果。

上面的图还手动改变了一些层的宽度。

使用ChatGPT来为我们生成一个工作原型还是可以的。但是还是需要我们去手动修改一些细节。

对于我们的理解而言,Python代码要比LaTeX多很多,能够让他生成Python代码呢?这个经过测试也不太现实,因为Python接口包含非常有限的层数:

  • Input layers
  • Dense (fully connected) layers
  • Convolutional layers
  • Pooling layers
  • Unpooling layers
  • Activations layers (ReLu, Softmax)
  • Skip-Layer connections
  • Residual layers
  • Sum / Add layers
  • Output layers

所以一些特殊层还是需要LaTeX版本。

总结

PlotNeuralNet十分强大,ChatGPT也很强大,使用ChatGPT可以让我们的任务更容易,虽然ChatGPT有局限性。但它可以被用作生成原型的工具,然后可以根据需要进行调整。

最后我们再总结一下提示:

I started writing LaTeX code to visualize a CNN please finish it : […]

这样就ok了

https://avoid.overfit.cn/post/3c080832c52d4929a3bfd38ca8b0a0fd

作者:Clément Delteil

目录
相关文章
|
25天前
|
安全 网络协议 网络安全
|
2月前
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
63 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
2月前
|
机器学习/深度学习 数据可视化 Windows
深度学习笔记(七):如何用Mxnet来将神经网络可视化
这篇文章介绍了如何使用Mxnet框架来实现神经网络的可视化,包括环境依赖的安装、具体的代码实现以及运行结果的展示。
54 0
|
2月前
|
机器学习/深度学习 数据可视化 Linux
Seaborn可视化学习笔记(一):可视化神经网络权重分布情况
这篇文章是关于如何使用Seaborn库来可视化神经网络权重分布的教程,包括函数信息、测试代码和实际应用示例。
48 0
|
4月前
|
数据可视化 算法 C++
脑研究、脑网络分析、可视化的工具箱有哪些?
本文列举并简要介绍了用于脑研究、脑网络分析和可视化的多种工具箱,如Brain Connectivity Toolbox、bctpy、人类连接组项目等,为神经科学研究者提供了丰富的分析和可视化大脑网络的工具选择。
208 2
脑研究、脑网络分析、可视化的工具箱有哪些?
|
4月前
|
数据采集 存储 数据可视化
基于Python 网络爬虫和可视化的房源信息的设计与实现
本文介绍了一个基于Python Scrapy框架和echart库的房源信息采集与可视化系统,该系统通过自动化爬虫提高房地产数据采集效率,并通过Flask服务器实现数据的Web可视化展示,旨在帮助房地产从业人员和政策制定者高效、直观地了解房源信息。
|
4月前
|
机器学习/深度学习 数据可视化 Python
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码
该博客展示了如何通过Python预处理神经网络权重矩阵并将其导出为表格,然后使用Chiplot网站来可视化神经网络的神经元节点之间的连接。
57 0
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码
|
5月前
|
监控 Python
单位网络监控软件中的PostScript图形编程
PostScript是一种强大的页面描述语言,广泛应用于图形编程和打印控制。在单位网络监控软件中,利用PostScript可以实现复杂的图形绘制和文本处理。本文将通过几个具体的代码示例,介绍如何在PostScript中进行图形编程,并讨论如何将监控到的数据自动提交到网站。
70 10
|
5月前
|
安全 网络安全 网络虚拟化
什么是VPN虚拟专业网络技术?
虚拟专用网络(VPN)技术利用互联网服务提供商(ISP)和网络服务提供商(NSP)的网络基础设备,在公用网络中建立专用的数据通信通道。VPN的主要优点包括节约成本和提供安全保障。
95 6
|
4月前
|
Prometheus 监控 Cloud Native
在Linux中,如何使用Grafana和Prometheus进行网络监控和可视化?
在Linux中,如何使用Grafana和Prometheus进行网络监控和可视化?