使用PlotNeuralNet绘制深度学习网络图 |
您所在的位置:网站首页 › latex绘制ppt › 使用PlotNeuralNet绘制深度学习网络图 |
PlotNeuralNet源代码链接:https://github.com/HarisIqbal88/PlotNeuralNet 网上找了很多画深度学习网络图的方法,发现这个PlotNeuralNet的颜值与实用性比较出色,只是需要进行编程,但是对于搞深度学习的人来说,问题应该不大。 先展示几张PlotNeuralNet画的效果图: ![]() 软件安好了后,打开Git Bash,使用cd 命令将工作路径转到PlotNeuralNet所在的路径下。可以用 ls 看到PlotNeuralNet下的目录结构。 注意test_simple后不加.py后缀,等程序运行结束,可以在 PlotNeuralNet/pyexamples目录下看到新生成的test_simple.pdf文件。 !!!有时因为该文件夹下已有你要创建的文件的同名文件,这时候会报个错,并让你重新输一个名字,随便输入一个文件名,按回车即可。 下面的任务就是利用给的这个例子,我们来画自己的网络图,我们先整体看一下 test_simple.py 代码的内容。代码中给出了我的注释。 import sys sys.path.append('../') #pycore.tikzeng是发布者写的python接口,可以直接调用里面的函数来就行绘图,本博客末尾有解释 from pycore.tikzeng import * #定义自己的网络图结构 arch = [ """ 前三行是一个初始化的过程,以后写自己的网络图照抄上去就行 """ to_head( '..' ), to_cor(), to_begin(), #添加一个卷积层conv1 to_Conv("conv1", 512, 64, offset="(0,0,0)", to="(0,0,0)", height=64, depth=64, width=2 ), #添加一个池化层pool1 to_Pool("pool1", offset="(0,0,0)", to="(conv1-east)"), #添加一个卷积层conv2 to_Conv("conv2", 128, 64, offset="(1,0,0)", to="(pool1-east)", height=32, depth=32, width=2 ), #添加一个连接线,在pool1和conv2之间 to_connection( "pool1", "conv2"), #添加一个池化层pool2 to_Pool("pool2", offset="(0,0,0)", to="(conv2-east)", height=28, depth=28, width=1), #添加一个softmax层soft1 to_SoftMax("soft1", 10 ,"(3,0,0)", "(pool1-east)", caption="SOFT" ), #添加一个连接线,在pool2和soft1之间 to_connection("pool2", "soft1"), #添加一个 “+” 按钮sum1 to_Sum("sum1", offset="(1.5,0,0)", to="(soft1-east)", radius=2.5, opacity=0.6), #添加一个连接线,在soft1和sum1之间 to_connection("soft1", "sum1"), #结束 to_end() ] #后面的东西在自己画图是直接粘贴过去就行 def main(): namefile = str(sys.argv[0]).split('.')[0] to_generate(arch, namefile + '.tex' ) if __name__ == '__main__': main()下面对其中我认为重要的代码逐一进行一个详细的分析。 有时会在网络头部加上一张图片,PlotNeuralNet中也可以做到, 用to_input()函数。 ##################################################################### # 添加输入的图像到网络头部,使用函数to_input # to_input(pathfile,to='(-3,0,0)', width=8, height=8, name="temp") # pathfile--输入图片的路径, # to="(-3,0,0)"--输入图片的坐标(x,y,z), # width=16,height=16--图片显示时的宽和高,根据需要自己调节 # name--指名称 # 这行代码紧跟前三行的后面 ##################################################################### to_input('1.jpg',width=8, height=8),效果图 添加池化层的代码和参数如下: ##################################################################### # 添加池化层 # to_Pool(name,offset="(0,0,0)",to="(0,0,0)",width=1,height=32,depth=32,opacity=0.5,caption=" ") # 部分参数与卷积层相同 # opacity--透明度,0-1之间 # to="(conv1-east)"--在con1层的东侧 ##################################################################### to_Pool("pool1", offset="(0,0,0)",to="(conv1-east)",width=1, height=64, depth=64,opacity=0.9),效果图: 这里创建了依次创建了卷积层conv1、池化层pool1、卷积层conv2、池化层pool2。 pool1在conv1的正东侧,偏移offset为0; conv2在位置(0,0,0)(这里的坐标还没弄太明白,但是影响也不太大,等以后再进行研究一下,有大佬了解也请指点)处,相对偏移offset(5,0,0),即在x方向(水平向右为x的正方向)平移5个单位(单位是啥不太清楚); pool2在conv2的正东侧,x方向上偏移offset为0。如下图所示: 效果图: 有了这些基本的认识,来画出一张简单的网络图来说问题就不大了。 这些函数都是在路径 :PlotNeuralNet-master\pycore下的tikzeng.py与blocks.py中,博客中未提及的函数可以从tikzeng.py与blocks.py找到,对于每个函数自己都可以试一试,熟悉熟悉就会了,还可以自己定义自己的函数,方便用来画图。 参考博客:https://blog.csdn.net/qq_43790749/article/details/110590396?spm=1001.2014.3001.5502 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |