HarisIqbal88/PlotNeuralNet · 上手攻略

  • 仓库:HarisIqbal88/PlotNeuralNet
  • 链接:https://github.com/HarisIqbal88/PlotNeuralNet
  • 分类:academic-writing
  • 作者:Tom
  • 更新:2026-07-14

这是什么

PlotNeuralNet 是一个用 LaTeX 代码绘制神经网络结构图的工具,通过 Python 接口定义网络架构,自动生成 TikZ/LaTeX 代码,编译后输出印刷级的神经网络示意图。

简单说:写 Python 代码描述你的网络拓扑 → 运行脚本 → 产出可以直接放进论文的 .pdf / .png 神经网络图。

它的输出风格干净、学术感强,非常适合放进论文、Thesis、课程报告和 PPT。示例包括 VGG、U-Net、ResNet、Inception、CharRNN 等常见架构的图表。


解决什么问题

画神经网络结构图是学术写作中很烦人的环节: - 用 PowerPoint/Visio 画 → 不够专业,修改麻烦 - 用 Matplotlib/Graphviz 画 → 效果一般,布局难控制 - 用专业绘图工具 → 学习成本高,协作不便

PlotNeuralNet 把网络拓扑描述变成代码,天然可复用、可版本控制、可批量生成,输出质量对齐 LaTeX 论文排版标准。


快速安装

环境依赖

Ubuntu

# Ubuntu 18.04+
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

  1. 下载安装 MikTeX
  2. 安装 Bash 环境:推荐 Git Bash 或 Cygwin
  3. 确认 LaTeX 编译链可用

安装 PlotNeuralNet 本身

git clone https://github.com/HarisIqbal88/PlotNeuralNet.git
cd PlotNeuralNet

无 pip 安装包,直接用源码目录。


核心用法

方法一:Python 接口(推荐)

步骤 1:创建项目目录

mkdir my_project
cd my_project

步骤 2:编写 Python 定义文件(如 my_arch.py

import sys
sys.path.append('../')          # 指向 PlotNeuralNet 根目录
from pycore.tikzeng import *     # 导入核心绘图模块

# 定义网络架构
arch = [
    to_head('..'),               # 公共头部(导入包等)
    to_cor(),                   # 公共颜色定义
    to_begin(),                 # 开始 TikZ 环境

    # 卷积层 conv1: 输入通道512,输出通道64,尺寸 64x64,宽度2
    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"),

    # 第二个池化
    to_Pool("pool2",
            offset="(0,0,0)",
            to="(conv2-east)",
            height=28, depth=28, width=1),

    # 全连接/SoftMax 层
    to_SoftMax("soft1", 10,
               offset="(3,0,0)",
               to="(pool1-east)",
               caption="SOFT"),

    # 连接线:pool2 → soft1
    to_connection("pool2", "soft1"),

    to_end()                    # 结束 TikZ 环境
]

def main():
    namefile = str(sys.argv[0]).split('.')[0]
    to_generate(arch, namefile + '.tex')   # 输出 .tex 文件

if __name__ == '__main__':
    main()

步骤 3:运行生成 .tex 文件

python my_arch.py
# 生成了 my_arch.tex

步骤 4:用 tikzmakesh 编译

bash ../tikzmake.sh my_arch
# 或直接:
cd my_project
bash ../tikzmake.sh my_arch

⚠️ tikzmake.sh 是核心编译脚本,内部调用 pdflatexlualatex 编译 .tex 文件,依赖步骤1中的 texlive 安装完整。

方法二:直接使用已有的 examples

仓库的 examples/ 目录下有多个预制示例(pyexamples/),可直接复制修改:

cd PlotNeuralNet/pyexamples/
# 查看已有示例文件
ls
# 挑选一个接近自己需求的,复制到 my_project/
cp ../examples/vgg16.py my_project/

可用的图层类型

函数 对应形状 说明
to_Conv(name, input, output, ...) 长方体 卷积层
to_Pool(name, ...) 矮长方体 池化层
to_SoftMax(name, num_classes, ...) 扁立方体 全连接/SoftMax
to_Fc(name, num_units, ...) 长方体 全连接层
to_Input(name, ...) 立方体 输入层
to_connection(from, to) 箭头连线 层间连接
to_skips(from, to, param) 跳跃连接 ResNet 类跳层
to_SR(layers, ...) - 循环层(Elman)

📌 注意:图层函数参数中,offsetto 控制节点位置关系,需参考示例摸索;官方文档较少,建议直接改示例文件来学习。


典型适用场景

场景 说明
论文插图 生成可直接放进 LaTeX 论文的神经网络架构图
课程/Thesis 报告 清晰展示网络设计,学术风格
PPT 演示 导出 PDF 后截图放进幻灯片
批量生成架构对比图 同一模板改参数,批量出图
非代码背景的论文合作 让非 DL 背景的合作者通过 Python 代码理解架构

坑与注意

坑点 说明
LaTeX 环境必须完整安装 tikzmake.sh 依赖 pdflatex,缺包时报错,需装完整 texlive
图层位置参数调试复杂 offset/to 定位需要反复试错,建议直接 fork 一个已有示例改参数
不支持中文标签 TikZ 默认字体不支持中文,中文标签需要额外配置 XeLaTeX + fontspec
彩色印刷可能不友好 默认配色在黑白打印时对比度可能不足,建议根据用途修改 pycore/tikzeng.py 中的颜色定义
复杂架构(如 Transformer) 库以卷积/全连接层为主,更复杂的架构(如 attention head、multi-branch)需要大量自定义
Windows Git Bash 路径问题 tikzmake.sh 在 Git Bash 下可能存在路径分隔符兼容问题
Python 2/3 兼容性 仓库较老,部分示例可能使用 Python 2 语法,新版 Python 3 下需小幅修改(如 print 语句)

与同类对比

特性 PlotNeuralNet Matplotlib + manim PlotNeuralNet(Python)vs draw_io/Visio
输出风格 LaTeX/TikZ,印刷级 代码动画,视觉感强 代码驱动 vs 拖拽
学习曲线 中等(Python + LaTeX) 高(manim 语法复杂) 低于 manim
定制灵活度 高(Python 代码) 高(代码) 可编程 vs 图形界面
支持复杂架构 一般 差不多
协作便利性 好(代码即文档) -
活跃度 ⚠️ 维护较少 活跃 相对较老,但够用

其他值得关注的替代工具: - NN-SVG(网页工具,导出 SVG)—— 轻量快速,适合简单架构 - TensorBoard—— 直接从 TensorFlow/PyTorch 模型导出结构图 - Netron—— 神经网络可视化,但偏工程非学术风格

结论:如果你在写需要 LaTeX 排版的学术论文,PlotNeuralNet 是目前最原生的选择——代码即文档,输出直接嵌入论文;如果追求更炫酷的演示效果,考虑 manim 或 PlotNeuralNet 导出后再用 Illustrator 精修。


一句话推荐结论

用 Python 代码描述网络拓扑,LaTeX 自动编译出印刷级神经网络图——PlotNeuralNet 是学术论文中绘制网络结构图最「原配」的解决方案,代码即文档,修改可版本控制,是写 DL 论文必备的作图神器。