thomasahle / tensorgrad

Tensor Network Library with Autograd
http://tensorcookbook.com
GNU Affero General Public License v3.0
127 stars 8 forks source link

Tikz error from simple program #3

Closed thomasahle closed 4 months ago

thomasahle commented 4 months ago

The following program gives illegal tikz:

    x = Variable("x", "batch, din")
    W1 = Variable("W", "din1, dout1, k")
    act = x @ Copy("din, din1, din2") @ W1
    W2 = Variable("W2", "din2, dout2, k")
    expr = act @ Copy("dout1, dout2, dout") @ W2

it outputs:

\documentclass[tikz]{standalone}
\usetikzlibrary{graphs, graphdrawing, quotes, arrows.meta, decorations.markings, shapes.geometric}
\usegdlibrary{trees, layered, force}
\usepackage[T1]{fontenc}
\usepackage{comicneue}
\begin{document}
\tikz[
    font=\sffamily,
    every node/.style={
        inner sep=3pt,
    },
    identity/.style={circle, draw=black, fill=black, inner sep=0pt, minimum size=4pt},
    zero/.style={rectangle, draw=black, fill=white, inner sep=2pt},
    conv/.style={rectangle, draw=black, fill=white, inner sep=2pt},
    flatten/.style={rectangle, draw=black, fill=white, inner sep=2pt},
    function/.style={circle, draw=black, fill=white, inner sep=2pt},
    var/.style={circle, draw=purple!50!black, very thick, fill=purple!20, inner sep=3pt},
    degree0/.style={circle, draw=orange!50!black, very thick, fill=orange!20, inner sep=3pt},
    degree1/.style={circle, draw=blue!50!black, very thick, fill=blue!20, inner sep=4pt},
    degree2/.style={rectangle, draw=red!50!black, very thick, fill=red!20, inner sep=6pt},
    degree3/.style={diamond, draw=green!50!black, very thick, fill=green!20, inner sep=4pt},
    degree4/.style={star, star points=5, draw=purple!50!black, very thick, fill=purple!20, inner sep=4pt},
    label/.style={scale=2, inner sep=0pt},
    subgraph nodes={draw=gray, rounded corners},
    derivative_subgraph/.style={draw=black, very thick, circle},
    expectation_subgraph/.style={draw=black, very thick, sharp corners},
    function_subgraph/.style={draw=black, thick, dashed, rounded corners},
    subgraph text none,
    every edge/.append style={
        very thick,
    },
    every edge quotes/.style={
        font=\fontsize{5}{5.5}\selectfont,
        fill=white,
        fill opacity=0.85,
        text opacity=1,
        midway,
        auto,
        inner sep=1pt,
    },
]
\graph [    tree layout,
    components go down left aligned,
    fresh nodes,
    sibling sep=1em,
    node sep=1em,
    nodes behind edges,
] {
  9384427349064316675[degree2,as=x,nudge=(left:-0.302em)];
  17252257576052696935[identity,as=,nudge=(left:-0.454em)];
    (9384427349064316675) -- [, bend left=0, auto=right, "$din$", "$din$"  at start, "$$"  at end] (17252257576052696935);
  3232644547172726449[degree3,as=W,nudge=(left:-0.462em)];
    (17252257576052696935) -- [, bend left=0, auto=right, "$din_{1}$", "$$"  at start, "$din1$"  at end] (3232644547172726449);
  14440642115467507157[identity,as=,nudge=(left:-0.278em)];
    (3232644547172726449) -- [, bend left=0, auto=right, "$dout_{1}$", "$dout1$"  at start, "$$"  at end] (14440642115467507157);
  7385809608858714323[degree3,as=W_{2},nudge=(left:-0.285em)];
    (17252257576052696935) -- [, bend left=0, auto=right, "$din_{2}$", "$$"  at start, "$din2$"  at end] (7385809608858714323);
    (3232644547172726449) -- [, bend left=0, auto=right, "$k$", "$k$"  at start, "$k$"  at end] (7385809608858714323);
    (14440642115467507157) -- [, bend left=0, auto=right, "$dout_{2}$", "$$"  at start, "$dout2$"  at end] (7385809608858714323);
  9384427349064316675+batch[style={},as=,nudge=(left:-0.252em)];
    (9384427349064316675) -- [, bend left=0, auto=right, "$batch$", "$batch$"  at start, "$$"  at end] (9384427349064316675+batch);
  14440642115467507157+dout[style={},as=,nudge=(left:0.476em)];
    (14440642115467507157) -- [, bend left=0, auto=right, "$dout$", "$$"  at start, "$$"  at end] (14440642115467507157+dout);
};
\end{document}

I think the issue is the empty $$.

thomasahle commented 4 months ago

Fixed in https://github.com/thomasahle/tensorgrad/commit/406f3c5c2ca947d8d8a8247eb6bc09d4d2fb520a