乐趣区

关于人工智能:PlotNeuralNet-ChatGPT创建专业的神经网络的可视化图形

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

退出移动版