当前位置: 首页 > news >正文

PlotNeutralNet使用教程

PlotNeutralNet使用教程

参考来源:

https://blog.csdn.net/Zhanglw882/article/details/115537471

https://blog.csdn.net/qq_41605934/article/details/118423571

https://blog.csdn.net/li26324949/article/details/146480338

1.下载工具

需要下载的工具包括:MikTeX,Python代码编辑器,Git bash(可选),安装过程如下:

  1. 安装MikTex,请移步https://miktex.org/download,下载完一直Next就行了;

  2. 点击Github链接https://github.com/HarisIqbal88/PlotNeuralNet,下载PlotNeuralNet 脚本到本地。如果使用Git bash下载的话,使用命令:git clone https://github.com/HarisIqbal88/PlotNeuralNet;

    image-20251114151023320

    上一步完成之后,运行包中pyexamples文件夹下的unet.py文件,如果能成功的话证明python环境没什么问题;

  3. 软件安好了后,打开Git Bash,使用cd 命令将工作路径转到PlotNeuralNet所在的路径下。可以用 ls 看到PlotNeuralNet下的目录结构。
    image-20251114151338743

  4. 先看一个例子:

    • 将工作路径转到 PlotNeuralNet/pyexamples,可以看到里面有个 test_simple.py 文件。
    • 里面有个test_simple.pdf文件,是发布者上传的,可以提前删除它。

    ps: 最近下载的没有test_simple.pdf这个文件了。

    image-20251114151555270

    • 运行命令:

      bash ../tikzmake.sh test_simple
      

      注意test_simple后不加.py后缀,等程序运行结束,可以在 PlotNeuralNet/pyexamples目录下看到新生成的test_simple.pdf文件。

      第二种运行方法(非git):

      1. 打开pycharm,运行自己写的神经网络结构的python代码(我是在cmd里面, 切换到文件所在的文件夹下面,运行命令python test_simple.py[1]),运行后就会生成对应的xxx.tex文件(latex文件)确保文件结构是下面这样的:

        PlotNeuralNet/
        ├── layers/
        │ ├── init.tex
        │ └── …
        ├── my_project/
        │ ├── test.py

        image-20251114155608156

        image-20251115141523455

        image-20251115144852372

      2. 打开安装好的TexWorks,Windows用户按win键搜索tex:
        image-20251114154611068

      3. 把python生成的.tex 文件拖入tex中
        image-20251115142101451

        image-20251115145436152

        第三种运行方法:运行完python文件后,使用cmd进入当前文件夹,执行命令pdflatex test_simple.tex

      上面两种方法的运行结果如下图所示:

      image-20251114152203854

2. 实战

先整体看test_simple.py的内容,我们需要修改的只是arch中的元素和元素中的参数:

[注意不要忘记to_end(), 不然在运行tex文件的时候,会出现编译不完的情况,也就是所谓的编译卡住了。]

import sys
sys.path.append('../')
#pycore.tikzeng是发布者写的python接口,可以直接调用里面的函数来就行绘图,本文末尾有解释
from pycore.tikzeng import *#定义自己的网络图结构
arch = ["""前三行是一个初始化的过程,以后写自己的网络图照抄上去就行"""to_head( '..' ),to_cor(),to_begin(),#添加一个卷积层conv1to_Conv("conv1", 512, 64, offset="(0,0,0)", to="(0,0,0)", height=64, depth=64, width=2 ),#添加一个池化层pool1to_Pool("pool1", offset="(0,0,0)", to="(conv1-east)"),#添加一个卷积层conv2to_Conv("conv2", 128, 64, offset="(1,0,0)", to="(pool1-east)", height=32, depth=32, width=2 ),#添加一个连接线,在pool1和conv2之间to_connection( "pool1", "conv2"), #添加一个池化层pool2to_Pool("pool2", offset="(0,0,0)", to="(conv2-east)", height=28, depth=28, width=1),#添加一个softmax层soft1to_SoftMax("soft1", 10 ,"(3,0,0)", "(pool1-east)", caption="SOFT"  ),#添加一个连接线,在pool2和soft1之间to_connection("pool2", "soft1"), #添加一个 “+” 按钮sum1to_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()

2.1 有时会在头部加一张图片

  1. 用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('lib.jpg',width=8, height=8),
  1. 再次运行(或者使用上述第二种运行方法)
bash ../tikzmake.sh test_simple

image-20251114154240398
image-20251114154328392

2.2 添加卷积层

#####################################################################
# 添加卷积层
# to_Conv(name,s_filer=256,n_filer=64,offset="(0,0,0)",to="(0,0,0)",width=1,height=40, depth=40, caption=" ")
# name--名称
# s_filer--卷积层图像尺寸
# n_filer--卷积层图像深度(通道数)
# s_filer、n_filer指卷积层结构的参数,并非制图时的尺寸
# offset--与前一层分别在x,y,z方向的距离
# to--在x,y,z方向的坐标,
# offset、to的在后面会深入讲,可以自己该不同的值试验一下,找规律
# width--制图时的厚度
# height、depth--制图时的长宽
# width、height、depth指在制图时,卷积层的尺寸
# caption--备注信息
#####################################################################
to_Conv("conv1", 512, 64, offset="(0,0,0)", to="(0,0,0)", height=32, depth=32, width=2 ),

image-20251115151142108

注意一下,s_filer,n_filer指的是在图中标注的尺寸大小,width,height, depth指的是在图中图形显示的实际厚、长与深度(宽)。

2.3 添加池化层

#####################################################################
# 添加池化层
# 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=32, depth=32,opacity=0.5),

image-20251115151956110

  • offset:相对偏移,表示这一层与上一层分别在x,y,z上的偏移量,一般只需要调整x, offset="(5,0,0)", 表示这一层与上一层的在x方向上的偏移是5.

  • to:告诉程序当前节点要相对于哪个已有节点(或坐标)来定位. offset指的是偏移量,那么to就规定了一个基准,让当前这一层相对于to偏移offset距离。

    解释:上述代码中提到的pool1层的offset="(0,0,0)", 并且to="(conv1-east)",指的是在conv1的右边,在xyz轴上的偏移都是0,亦即,pool1层在conv1的正右边,并且是挨着的。

    • 格式 1:(节点名称-方向)

      (最常用)

      • 方向包括:east(东 / 右)、west(西 / 左)、north(北 / 上)、south(南 / 下),对应节点的四个边缘中点。
      • 示例:to="(conv1-west)"(以 conv1 左侧为参考)、to="(soft1-south)"(以 soft1 下方为参考)。
    • 格式 2:(绝对坐标)

      (如to="(0,0,0)")

      • 直接指定 3D 坐标(x,y,z),通常用于第一个节点(如输入层),作为整个网络的 “起点坐标”。
      • 示例:输入层 to_input(..., to="(0,0,0)"),后续所有节点都以这个起点为基准偏移。
    • 格式 3:(节点名称)(省略方向)

      • 默认以该节点的 “中心” 为参考锚点,适合需要居中对齐的场景。
      • 示例:to="(pool2)"(以 pool2 节点的中心为参考)。

2.4 小小练习一下


import sys
sys.path.append('../')
from pycore.tikzeng import *# defined your arch
arch = [to_head( '..' ),to_cor(),to_begin(),to_input('lib.jpg', width=8,height=8),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)", width=1, height=32, depth=32,opacity=0.5),to_Conv("conv2",512,64,offset="(5,0,0)", to="(pool1-east)", height=64, depth=64, width=2),to_Pool("pool2", offset="(5,0,0)", to="(conv2-east)",width=1,height=32,depth=32,opacity=1),to_end()]def main():namefile = str(sys.argv[0]).split('.')[0]to_generate(arch, namefile + '.tex' )if __name__ == '__main__':main()

9237bd5c237f65dfe5c87ecc5a8c665c_720

2.5 层与层之间带箭头

to_connection(): 水平连接,参数为:起始位置、中止位置

to_skip(): 跨连接,参数为:起始位置、中止位置,pos默认为1.25, 可以自己调试

#水平连接,参数为:起始位置、中止位置
to_connection("pool1", "conv2"),
to_connection("conv2","pool2"),
#跨连接,参数为:起始位置、中止位置,pos默认为1.25,可以自己调一调试试啥效果
to_skip(of = "pool1",to = "pool2",pos=1.25),

image-20251115160310718

上图中水平的线是to_connection(), 蓝色的线是to_skip().

3 总结

新手容易出错的地方:

1. 怎么打开python文件?

一定要按照下述结构在pycharm中打开

PlotNeuralNet/
├── layers/
│ ├── init.tex
│ └── …
├── my_project/
│ ├── test.py

2. 在cmd运行的时候为什么运行后得出的文件的文件名是.tex?(没有文件名)

在cmd中运行的时候,如果采用上述代码的结构一定要记得切换到你的项目文件夹下面,不然代码中namefile = str(sys.argv[0]).split('.')[0] 会把输入的python .\pyemam\test_simple.py 直接以 . 为分隔符前面的那一部分会文件名。

image-20251115161118835

3. 记不住怎么办?

我觉得先学会基本操作,一些复杂的操作或者名字参数可以等之后用到了再去查。


  1. 为什么一定是test_simple.py?其实意思是:一定是文件名.py,一定不要文件名前面有路径。否则就会出现前文所述的运行结果中文件名是空的情况。详见这篇文章[https://www.cnblogs.com/seryn/p/19225481] ↩︎

http://www.rkmt.cn/news/50482.html

相关文章:

  • 2025雅思培训课程排行榜:高提分课程定制机构深度解析
  • 11.10-11.15 总结
  • 2025年芹黄素实力厂家权威推荐榜单:芹菜苷元/芹菜素/芹菜素95%源头厂家精选
  • 2025年遥控平板车厂家权威推荐榜单:平板运输车/顶升电动平车/电动地平车源头厂家精选
  • 2025 年 11 月空气电加热器,法兰电加热器,土壤修复电加热器厂家最新推荐,聚焦资质、案例、售后的七家企业深度解读
  • C# 中,依赖注入(DI)的实现方式 - 教程
  • mns 1115
  • 2025 年 11 月温州电商财税律师,温州执行律师,温州法律顾问律师最新推荐,聚焦资质、案例、售后的七家机构深度解读
  • P2966 [USACO09DEC] Cow Toll Paths G 题解
  • 【System Beats!】第八章 异常控制流
  • oracle 优化
  • 2025 年筛选机厂家推荐:深圳市恩艾斯科技有限公司,光学筛选机的专业缔造者与行业深耕者
  • 对拍程序
  • 反编译通用流程
  • 2025 年 11 月超细碳酸钙,重钙,碳酸钙厂家最新推荐,产能、专利、环保三维数据透视!
  • 从工具理性到价值共生:开源链动2+1模式、AI智能名片与S2B2C商城体系的社会连接重构研究
  • 2025 年 11 月山东实验室净化装修,山东实验室净化工程,山东实验室净化车间最新推荐,聚焦资质、案例、售后的五家机构深度解读!
  • 【洛谷】哈希表实战:5 道经典算法题(unordered_map/set 应用 + 避坑指南) - 详解
  • Redis 缓存一致性:从“数据不一致”根源到解决方案全梳理 - 详解
  • 2025年11月杭州驾照翻译、杭州病历翻译、杭州法律翻译品牌最新推荐,权威测评排名与选择指南!
  • 从《A Byte of Vim》中学习到的跳转方式gf
  • 发烧
  • 串口DMA接收与Modbus-CRC16校验
  • 2025留学生求职机构TOP5:覆盖30+国家求职资源,93%藤校录取+98.8%就业率保障
  • 2025年调理品滚揉机厂家权威推荐榜单:鸡胸肉真空滚揉机/真空滚揉机/全自动真空滚揉机源头厂家精选
  • 德国留学中介怎么选?2025真实测评,新通教育等机构帮你稳拿TU9 Offer
  • 2025年特种电缆生产厂家权威推荐榜单:防火电缆/电线电缆/控制电缆源头厂家精选
  • 深入解析:【C++】stack|queue|deque
  • GPT-Sovits模型实现AI声音克隆
  • 2025年抑尘剂供货厂家权威推荐榜单:煤矿阻化剂/氯化镁/无水氯化镁源头厂家精选