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