网站首页 > 技术文章 正文
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添加到环境变量中。
这个基本示例代码如下,我们简单的解释一下都是什么。
import sys
sys.path.append('../')
from pycore.tikzeng import *
# 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()
]
def main():
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了
作者:Clément Delteil
猜你喜欢
- 2024-10-21 FSGS:使用3DGS实时Few-shot视图合成(ECCV2024)
- 2024-10-21 医学图像分割(一):SD-Net网络和ECB纠错训练机制
- 2024-10-21 设计一个适合三维网格重建的卷积神经网络#AI#干货解读
- 2024-10-21 「深度学习」使用深度学习基于受体三维结构进行分子设计
- 2024-10-21 「资源」斯坦福CS231n 2017春季课程全公开,视频+PPT+英文字幕
你 发表评论:
欢迎- 11-18软考系统分析师知识点十六:系统实现与测试
- 11-18第16篇 软件工程(四)过程管理与测试管理
- 11-18编程|实例(分书问题)了解数据结构、算法(穷举、递归、回溯)
- 11-18算法-减治法
- 11-18笑疯了!巴基斯坦首金!没有技巧全是蛮力!解说:真远啊!笑死!
- 11-18搜索算法之深度优先、广度优先、约束条件、限界函数及相应算法
- 11-18游戏中的优化指的的是什么?
- 11-18算法-分治法
- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)