Community图像github.com

szcharlesji/tikz-dl-visualizer

用优美的、直觉优先的TikZ/pgfplots静态图(编译为PDF和PNG)解释深度学习概念,并附带简短的阅读指南,面向中级深度学习学生。适用于幻灯片、论文、讲义和笔记PDF。

tikz-dl-visualizer 是什么?

该技能用于生成高质量的深度学习概念可视化静态图,基于TikZ和pgfplots,编译为PDF和PNG。它采用一致的可视化语言(颜色代表角色,遵循Canziani NYU-DL书籍风格)和标准的DL符号。用户可以用它来可视化注意力、卷积、反向传播、归一化、残差、RNN/LSTM、VAE、扩散、GAN、对比学习、优化器、损失景观、激活函数、嵌入、基于能量的模型等任何ML/DL概念。技能提供了完整的工具链:基础样式包(dlviz.sty)、示例图、编译脚本(render.py)和参考文档(视觉语言、原型图、TikZ陷阱)。工作流程强调先确定一条核心见解,选择适当的可视原型(如管道图、热力图、网格+感受野等),使用具体数值而非占位符,并遵循严格的颜色编码和设计原则。编译后需评审图片是否清晰传达想法,并通过阅读指南帮助用户理解。该技能支持Claude Code、Cursor、Codex等主流AI代理平台。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/szcharlesji/tikz-skills/tree/HEAD/skills/tikz-dl-visualizer

Installed? Explore more 图像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

TikZ 深度学习可视化器

你正在为一位已经掌握基础知识(MLP、反向传播、CNN、Transformer是什么)并且想知道为什么的学生绘图。这里的好图不是装饰过的框图;它让一个想法一目了然,并且值得再看第二眼。风格遵循 Alfredo Canziani 的 NYU 深度学习书籍:深灰色页面、ColorBrewer Set3 柔和色系,并且颜色始终表示相同含义。

所需内容已打包:

  • assets/dlviz.sty:调色板(深色和浅色)、符号宏、节点样式、pgfplots 外观、辅助工具。始终基于此构建,而不是从头重新设置样式;这样才能保证每张图都使用相同的视觉语言。
  • assets/examples/*.tex(附带 .png 预览):六个已编译、经审阅的图,每种原型一个。查看 PNG 以了解目标质量。从最接近的那个开始。
  • scripts/render.py:编译为 PDF 和 PNG,仅输出第一个错误。
  • references/visual-language.md:颜色角色、元素词汇、符号、排版和布局规则。在一次会话中画第一张图之前阅读它。
  • references/archetypes.md:哪种图适合哪种概念,以及一张 DL 事实表(这些事实常被画错)。阅读与你的概念对应的行。
  • references/tikz-gotchas.md:我们遇到的编译错误和布局陷阱及修复方法。当某些内容无法编译或看起来不对劲时阅读它。

工作流程

1. 找到核心想法

在接触 TikZ 之前,用一句话写下这张图必须传达的见解,表述方式要让学生能看到,例如:

  • “注意力的每个输出行是值行的加权平均,权重是 softmax 后得分矩阵的一行。”
  • “动量抵消振荡的梯度分量并累积一致的分量。”
  • “残差块只需学习修正 F(x),因为 x 被原封不动地传递过去。”

如果你写不出那句话,说明你还不知道要画什么。问问自己学生最可能有什么误解,然后针对它画图。如果概念很宽泛(例如“Transformer”),挑选最能说明问题的一个切片并说明;提供后续图来涵盖其余部分,而不是把所有内容塞进一张图。

2. 选择原型

打开 references/archetypes.md 并选择能让那句话可视化的视觉形式。主要形式:

原型展示内容示例文件
管道 / 计算图数据如何流动,哪部分提供输入给哪部分autoencoder.tex
矩阵 / 热力图布局张量形状和乘积、权重attention.tex
网格 + 感受野局部、滑动、共享操作convolution.tex
参数空间几何优化路径、损失等高线momentum.tex
小倍数图比较函数或设置activations.tex
前后空间扭曲层对输入空间的作用linear-map.tex

组合两种原型是可以的(如带小型热力图插图的管道),但应有一种主导。

3. 使其具体

抽象是直觉的敌人。使用小的、具体的大小(4 个 token,d_k = 3,5x5 输入,2 维参数)并说明它们代表什么。真实的数字优于占位符:和为 1 的权重、输出可验证的卷积、实际符合优化器行为的轨迹。

用 Python 计算数字,绝不手动或心算。 运行一个简短的脚本(通过 uv run --with numpy python - 或纯 Python),然后将坐标或值粘贴到 .tex 中。留下注释说明它们是如何生成的。手工制作的“示意性”数字是错误图的来源:softmax 行之和为 1.1,卷积输出与输入不匹配。

4. 编写图形

在输出文件夹(如果用户指定了则是他们的文件夹,否则为当前工作目录)中创建 <concept>.tex,以以下内容为起点:

% 标题: <2-3 句子: 看什么以及它展示了什么>
\documentclass[tikz,border=8pt]{standalone}
\usepackage[dark]{dlviz}   % [light] 用于白色论文/幻灯片
\begin{document}
\begin{tikzpicture}
  ...
\end{tikzpicture}
\end{document}

根据图形将存放的位置选择主题:深色(书籍风格)用于幻灯片、屏幕以及用户说应与书籍匹配的任何内容;浅色用于类似纸张的目的地(论文、学位论文、讲义 PDF、作业、打印)或当被要求时。如果没有任何提示,使用深色并提及 [light]。颜色角色在两个主题中保持一致,因此切换只需一个词。

最重要的原则(详情见 references/visual-language.md):

  • 颜色 = 角色,保持一致。 输入 x 粉色,隐藏 h 绿色,预测 ỹ 紫色,目标 y 蓝色,潜变量 z 橙色,代价/损失/能量红色,编码器薰衣草色,解码器水蓝色,预测器黄色,参数金色。在绘图中、标签中和方程式中为同一符号使用相同颜色(例如 \pink{\vx})。这能让眼睛在不阅读文字的情况下将图片和数学联系起来。每张图最多约 5 种色相;所有结构元素为白色/灰色。
  • 对比需要两种色相。 当图比较两种情况(普通 vs 残差,SGD vs 动量,BatchNorm vs LayerNorm)时,给每种情况分配自己的色相,并在整个图中为该情况的曲线、标签和突出显示使用这些色相。不要因为两者都是梯度就都用红色绘制;那么红色标记共同的事物(损失、反向方向),而比较部分一目了然。
  • 使大小可见。 如果一个量增长或缩小(梯度范数、注意力权重、方差),在绘图本身中编码它,而不仅仅在打印的数字中:逐渐变细的线条宽度、填充色调、箭头长度、点大小。对应关系也值得笔墨:从每个样本到其落点的细线比两个独立的点云能更好地展示变换。
  • 显示数学公式,颜色编码。 将定义性方程式放在图中,通常在下方,每个术语的颜色与其视觉对应物相同。
  • 处处标注形状。 用柔和的 dim 样式(\(\R^{n\times d_k}\))标注张量的形状。形状记账是理解 DL 操作的一半。
  • 跟踪一个示例。 用红色轮廓 (hl 样式) 突出显示一行、一个补丁或一个步骤(无论它出现在哪里),以便学生可以端到端地追踪单个计算。
  • 适量标注,就地标注。 使用细引导线的两三个短斜体注释 (annot),紧挨着它们解释的内容。使用直接标签而不是图例框。无整体标题(由标题完成),但多面板图使用 annot 样式的短面板标签,如“(a) 普通: \(\vx_l = F_l(\vx_{l-1})\)”,每个面板上方留有清晰空间。
  • 最少墨水。 无阴影、渐变、为 3D 而 3D 或装饰性图标。填充是边框颜色的浅色调(cell=colorX 实现此效果)。
  • 标准符号。 粗体小写向量、粗体大写矩阵、普通标量;使用宏(\vx、\mW、\vytld、\softmax)。行列惯例必须与你打印的方程式匹配(注意力使用按 token 的行形式 Q、K、V,如同 Vaswani 等人)。

5. 编译并查看

python <skill-dir>/scripts/render.py path/to/concept.tex

它会把 dlviz.sty 复制到图形旁边,以便该文件夹可以在任何地方重新编译,然后写入 concept.pdf 和 concept.png。如果编译失败,它打印第一个错误;查看 references/tikz-gotchas.md。如果缺少包,它打印 tlmgr 命令;告知用户,而不是未经询问就在他们的机器上运行安装。

然后打开 PNG 并像审稿人一样批判它。 编译完成并不意味着结束;assets/examples 中的每张图在查看后至少需要一轮修改。检查:

  1. 是否有任何重叠或接触:文本与线条、箭头穿过标签、文本触碰节点边界、标签在轴线或面板边缘被裁剪、一个面板的注释拥挤到另一个面板的标签?放大密集区域(使用 magick in.png -crop WxH+X+Y out.png 裁剪 PNG)而不是相信缩略图。
  2. 能否在三秒内看到核心想法?眼睛首先落在何处?那是否是正确的位置?
  3. 每种颜色是否在发挥作用,并且每个角色是否在所有地方使用相同颜色?
  4. 每个数字、形状和公式是否正确(参见 references/archetypes.md 中的事实表)?
  5. 间距是否均匀,对齐是否经过精心设计?

修复并重新编译,直到所有答案都是肯定的。两到三次迭代是正常的。

6. 交付

向用户提供:

  1. PNG(如果能够显示或发送文件,则内联展示),以及 .tex、.pdf 和 dlviz.sty 的路径。
  2. 阅读指南:4-8 句话,按照阅读顺序引导眼睛浏览图形(“从 Q 的高亮行开始……”),将每个视觉元素与数学公式联系起来,并以要点结束。面向中级学生撰写:不要重新解释神经元是什么,但确实解释机制为什么有效。
  3. 一行关于如何调整的建议:切换到 [light]、改变大小,或一个自然的后续图形(例如“多头版本下一步?”)。

保持 .tex 顶部的 % 标题: 注释与图形同步;它是用户将粘贴在文档中图形下方的标题。

兄弟技能

本技能生成静态图形:每个想法一个 PDF/PNG,适用于幻灯片、论文和打印。两个兄弟技能共享相同的 dlviz.sty 和视觉语言:

  • tikz-live:相同类型的图形但具有交互性(拖拽、滑动、悬停、播放),作为独立的网页呈现。当读者需要改变某些内容并观察机制响应时,或当用户要求交互式、可探索或在浏览器中动画化的图形时使用它。
  • tikz-explorer-book:整个课程或领域的网络书籍,带有概念图和章节图形;它使用本技能生成静态图形,使用 tikz-live 生成动态图形。

当请求不寻常时

  • 用户自己的 LaTeX 文档或导言。 如果用户有,则匹配他们的符号和颜色;你仍然可以 \input dlviz.sty 中的样式,或仅复制他们需要的部分。不要覆盖他们的页面颜色。
  • 幻灯片 (Beamer)。 生成独立的图形并展示 \includegraphics 的用法;对于逐步构建,使用 \only<n> / \visible<n> 分层,或制作多个独立文件(step-1, step-2...)。
  • 动画或随时间变化的过程。 对于打印和幻灯片,首选在一张图中使用小倍数图(t = 0, 1, 2, ..., T);面板序列能显示动画可能隐藏的趋势。如果将在屏幕上阅读并且读者需要逐步浏览或拖动浏览,则改用 tikz-live。
  • PowerPoint / Keynote。 插入 PNG(以 200 dpi 渲染,在全幻灯片宽度下清晰)或 PDF;对于白色幻灯片模板使用 [light]。
  • 论文图形。 使用 [light],如果论文中已说明则去掉图形中的方程式,并保持论文的字体(dlviz 不加载任何字体包,因此使用文档字体)。
  • 3D 曲面。 使用 pgfplots 的 \addplot3[surf] 配合 view={...} 和柔和的颜色映射(colormap name=dlheat),并询问等高线图是否能更好地解释它。通常是的。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

szcharlesji/tikz-explorer-book

Build a figure-first "explorer" web book for a course, syllabus, reading list or research field. The home page is an interactive Obsidian-style concept map with a guided tour; it leads into chapters, each built around 2–3 computed TikZ figures with reading-guide captions, where the key mechanism of a chapter can be a live figure the reader drags, slides or hovers (tikz-live) while static figures come from tikz-dl-visualizer. The result is published as one web page. Use this skill whenever someone wants a visual companion, illustrated notes, a study guide, a "book", a concept map or mind map of a field, or a big-picture overview that connects the ideas and papers everyone should know before going deep. Typical asks are "make a book for this course", "help me see the big picture of X", "illustrated guide to the papers on this syllabus", "something like Obsidian for generative models", "chapters with diagrams for each week". Use it even if they never say TikZ, and especially when they say diagrams and intuition

szcharlesji/tikz-live

Build an interactive, explorable figure in the TikZ/dlviz style (Canziani NYU-DL look) where the reader drags points, moves sliders, hovers rows or plays steps, while every static part stays real LaTeX typography. The static scaffold is compiled from TikZ, a small JS spec draws the live part in the same coordinates, and the build outputs one self-contained HTML page plus PNG snapshots to check. Use this whenever someone wants an interactive, live, explorable, draggable, animated, "play with it", slider or hover version of a technical or ML/DL diagram (optimizers, attention, convolution, linear maps, loss landscapes, sampling, normalization...), wants to make an existing TikZ figure interactive, or wants interactive figures for a web book, course notes, a blog or an artifact. For a static figure (slides, papers, print), use tikz-dl-visualizer; for a whole illustrated web book with many figures, use tikz-explorer-book, which builds its live figures with this skill.

相关技能