Files
Superfig/examples/dependency-graph.tex
dela db5598fbf7 feat: add superfig paper-figure toolkit
Standalone LaTeX/TikZ skill for non-tensor paper figures: node/edge
macros, lint-on-warning build, golden examples, and negative fixtures.
2026-08-17 09:40:12 +08:00

57 lines
1.7 KiB
TeX

% superfig golden example 4 -- a dual-encoder dependency, not a linear pipeline.
% Two encoder rows share a rail; fusion is placed from their east anchors.
% ../scripts/build.sh dependency-graph.tex
\documentclass[border=10pt]{standalone}
\usepackage[cjk]{superfig}
\sfsetrole{text}{sfTeal}
\sfsetrole{img}{sfOrange}
\sfsetrole{fuse}{sfViolet}
\sfsetrole{out}{sfCoral}
\begin{document}
\begin{tikzpicture}
\sfstage{S1}{双塔编码}
\sfrow{R1}{12mm}
\sfnode[role=text]{txt}{文本}{14mm}{10mm}
\sfconn{e1}{}
\sfnode[role=text]{te}{文本编码}{18mm}{10mm}
\sfrowend
\sflane{R1}
\sfcaption{txt}{text}{token 序列}
\sfcaption{te}{$E_t$}{文本向量}
\sfrow{R2}{12mm}
\sfnode[role=img]{img}{图像}{14mm}{10mm}
\sfconn{e2}{}
\sfnode[role=img]{ve}{视觉编码}{18mm}{10mm}
\sfrowend
\sflane{R2}
\sfcaption{img}{image}{视觉输入}
\sfcaption{ve}{$E_v$}{视觉向量}
% Fusion sits to the right of the two encoders, on their shared east line.
\sfnode[role=fuse, at={($(te.east)!0.5!(ve.east)+(20mm,0)$)}]{fu}{融合}{16mm}{10mm}
\sfnode[role=out, at={($(fu.east)+(16mm,0)$)}]{dec}{解码}{16mm}{10mm}
\sfnode[role=out, at={($(dec.east)+(16mm,0)$)}]{out}{输出}{14mm}{10mm}
\sfarrow{te.east}{fu.west}
\sfarrow{ve.east}{fu.west}
\sfarrow{fu.east}{dec.west}
\sfarrow{dec.east}{out.west}
\sfnolane
\sfcaption{fu}{fuse}{晚融合}
\sfcaption{dec}{decode}{条件生成}
\sfcaption{out}{out}{目标文本}
\sfbbox{all}
\sftopformula{F}{%
$y = \mathrm{Dec}\bigl(\mathrm{Fuse}(E_t(x),\, E_v(I))\bigr)$}
\sfmeaningbox{mb}{112mm}{all}
{两个编码器互不共享权重,只在融合节点会合}
{文本塔、视觉塔、融合、解码}
{各塔独立编码;融合后才进入解码,所以任一侧的依赖都经过融合节点}
\end{tikzpicture}
\end{document}