使用 LaTeX 与 TikZ 绘制深度学习网络模型图
在撰写深度学习相关的学术论文时,图表的规范性往往直接影响审稿人的第一印象。虽然 Visio 或 PPT 也能画图,但一旦涉及公式或需要多次修改,维护成本极高。相比之下,利用 LaTeX 配合 TikZ 宏包,不仅能保证字体、字号与正文完全一致,还能通过代码版本管理随时回溯修改记录。
环境准备
本地编译推荐安装 TeX Live 发行版,Windows 用户可直接用 MiKTeX。如果不想折腾环境,Overleaf 在线编辑器是最省心的选择,它预装了常用的宏包。
核心代码示例
下面是一个简单的多层感知机(MLP)绘制模板。这里使用了 positioning 库来简化节点定位,比传统的坐标计算更直观。
\documentclass[tikz,border=10pt]{standalone}
\usetikzlibrary{shapes.geometric, arrows.meta, positioning}
\begin{document}
\begin{tikzpicture}[
neuron/.style={circle, draw, minimum size=1.5em},
layer/.style={rectangle, draw, minimum width=2em, minimum height=1.5em, inner sep=2pt},
>=Stealth
]
% 输入层
\node[neuron] (i1) at (0,0) {};
\node[neuron] (i2) at (0,-1) {};
% 隐藏层
\node[layer] (h1) [right=of i1] {Hidden};
% 输出层
\node[neuron] (o1) [right=of h1] {};
% 连线
\draw[->] (i1) -- (h1);
\draw[->] (i2) -- (h1);
\draw[->] (h1) -- (o1);
\end{tikzpicture}
\end{document}
注意看 neuron 和 layer 的定义,这里把神经元画成圆形,隐藏层画成矩形块。实际项目中,如果是卷积神经网络,通常会把特征图画成网格状,这时候可以用 matrix 库来辅助排列。
避坑指南
- 层级关系:TikZ 默认是二维平面,画多层网络时容易重叠。建议给每一层设置独立的 y 轴偏移量,或者使用
scope环境隔离不同部分的坐标。 - 箭头样式:默认的箭头可能太粗或太细,建议统一使用
>=Stealth并在导言区定义好全局箭头样式,避免每处连线都要重复设置。 - 编译速度:复杂的网络图包含大量路径,本地编译可能会慢。如果只用于预览,可以开启
preview模式;最终导出 PDF 时再关闭。
结语
掌握 TikZ 绘图后,你会发现调整网络结构就像改代码一样灵活。虽然初期学习曲线稍陡,但一旦形成自己的模板库,后续画图效率会大幅提升。对于追求出版级质量的科研工作者来说,这绝对是值得投入的一项技能。


