Neural Sketch

Byte Latent Transformer

Example sketch of Byte Latent Transformer(ish) diagram

Byte Latent Transformer
examples/byte_ltransformer.tex
\begin{nskFigure}[]
\newcommand{\is}{A sequence}
\StrLen{\is}[\isLen]
 
% iterate each char
\foreach \i in {1,...,\isLen}{
    \StrChar{\is}{\i}[\cChar]
 
    \begin{nskSwitch}[type=string]{\cChar}
      \nskCase[ ]{
        \nskBlock[
          id={is\i},
          text-north={\textvisiblespace},
          width=.5cm,
          border-radius=1mm,
          fill=nskOrange,
          last-pos-s={right=.5cm},
        ]
      }
      \nskDefault{
        \nskBlock[
          id={is\i},
          text-north={\cChar},
          width=.5cm,
          fill=nskOrange,
          border-radius=1mm,
          last-pos-s={right=.5cm},
        ]
      }
    \end{nskSwitch}
  }
 
\nskMeasure[
  axis=horizontal,
  from={is1.south west},
  to={is\isLen.south east},
]
\nskBlock[
  id=ldec,
  width=\nskDistance, height=1cm,
  pos={below=.25cm of is1.south west},
  anchor={north west},
  text-center={Local Decoder},
  fill=nskYellow,
]
\nskCoord[id=x, pos={below left=1cm and .25cm of ldec.south west}]
\foreach \i in {4, 3, 2, 1} {
    \nskContainer[
      id=acn\i,
      padding=2mm,
      border-color=nskMidGray,
    ]{
      \foreach \i in {1,...,\i} {
          \nskBlock[
            width=.5cm,
            border-radius=1mm,
            fill=nskSecondaryAccent,
            last-pos-s={right=.4cm}
          ]
        }
    }
  }
\nskCoord[id=ad, pos={below left=1cm and -1.8cm of acn4.south west}]
 
\foreach \i in {4,...,1} {
    \nskBlock[
      id=a\i,
      width=.6cm, height=1.5cm,
      border-radius=1.5mm, fill=nskMainAccent,
      last-pos={right=.8cm},
    ]
 
  }
 
\foreach \i in {1,..., 4} {
    \nskConnect[
      from={acn\i.south},
      to={a\i.north},
      arrow-tip={-},
      arrow-style={very thick},
      color=nskMidGray,
    ]
  }
 
\nskBlock[
  id=lt,
  text-center={\large \textbf{Latent Transformer}},
  width=5cm, height=2cm,
  pos={below right=.5cm and -.7cm of a4},
  fill=nskMainAccent,
  importance=2,
]
 
\nskCoord[id=ad, pos={below left=1.2cm and .8cm of lt}]
 
\foreach \i in {4,...,1} {
    \nskBlock[
      id=a\i,
      width=.6cm, height=1.5cm,
      border-radius=1.5mm, fill=nskMainAccent,
      last-pos={right=.8cm},
    ]
 
  }
 
\nskCoord[id=x, pos={below left=1cm and 2.9cm of a4.south west}]
\foreach \i in {4, 3, 2, 1} {
    \nskContainer[
      id=bcn\i,
      padding=2mm,
      border-color=nskMidGray,
    ]{
      \foreach \i in {1,...,\i} {
          \nskBlock[
            width=.5cm,
            border-radius=1mm,
            fill=nskSecondaryAccent,
            last-pos-s={right=.4cm}
          ]
        }
    }
  }
 
\foreach \i in {1,..., 4} {
    \nskConnect[
      from={bcn\i.north},
      to={a\i.south},
      arrow-tip={-},
      color=nskMidGray,
      arrow-style={very thick},
    ]
  }
 
\nskBlock[
  id=ldec,
  width=\nskDistance, height=1cm,
  pos={below=.25cm of bcn4.south west},
  anchor={north west},
  text-center={Local Encoder},
  fill=nskYellow,
]
\nskCoord[id=x, pos={below left=.8cm and .5cm of ldec.south west}]
 
\foreach \i in {1,...,\isLen}{
    \StrChar{\is}{\i}[\cChar]
 
    \begin{nskSwitch}[type=string]{\cChar}
      \nskCase[ ]{
        \nskBlock[
          id={is\i},
          text-south={\textvisiblespace},
          width=.5cm,
          border-radius=1mm,
          fill=nskOrange,
          last-pos-s={right=.5cm},
          text-south-style={anchor=south, yshift=-6mm},
        ]
      }
      \nskDefault{
        \nskBlock[
          id={is\i},
          text-south={\cChar},
          text-south-style={anchor=south, yshift=-6mm},
          width=.5cm,
          fill=nskOrange,
          border-radius=1mm,
          last-pos-s={right=.5cm},
        ]
      }
    \end{nskSwitch}
  }
 
\nskConnect[
  from={bcn4.west},
  to={acn4.west},
  bend-type=double,
  bend-direction=left,
  % color=nskLighterGray,
]
\end{nskFigure}