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
安装 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 是核心编译脚本,内部调用
pdflatex或lualatex编译.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) |
📌 注意:图层函数参数中,
offset和to控制节点位置关系,需参考示例摸索;官方文档较少,建议直接改示例文件来学习。
典型适用场景
| 场景 | 说明 |
|---|---|
| 论文插图 | 生成可直接放进 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 论文必备的作图神器。