selfore.tex (3280B)
1 \begin{tikzpicture}[ 2 sample/.style={minimum width=1.5mm, inner sep=0mm}, 3 classA/.style={sample, fill=Dark2-B, circle}, 4 classB/.style={sample, fill=Dark2-B, regular polygon, regular polygon sides=3}, 5 classC/.style={sample, fill=Dark2-B, star, star points=5} 6 ] 7 \node[draw, minimum width=37mm] (bert) {\bertcoder}; 8 \node[below=4mm of bert] (x) {\(s\)}; 9 \node[above=4mm of bert] (h) {\(\vctr{h}\)}; 10 \node[draw, trapezium, trapezium angle=45, minimum width=2cm, anchor=south] (encoder) at ($(bert.north) + (-12mm, 1cm)$) {Encoder}; 11 \coordinate (zsw) at ($(encoder.top left corner) + (0, 1mm)$); 12 \coordinate (zne) at ($(encoder.top right corner) + (0, 11mm)$); 13 \node[draw, Dark2-B, inner sep=0, fit=(zsw) (zne)] (z) {}; 14 \draw[thin, Dark2-B, faded] (z.center) -- (z.south); 15 \draw[thin, Dark2-B, faded] (z.center) -- (z.30); 16 \draw[thin, Dark2-B, faded] (z.center) -- (z.150); 17 \node[classA, xshift=3mm, yshift=-2mm] at (z.center) {}; 18 \node[classA, xshift=4.4mm, yshift=0mm] at (z.center) {}; 19 \node[classA, xshift=5.2mm, yshift=-2.8mm] at (z.center) {}; 20 \node[classA, xshift=1.7mm, yshift=-3.4mm] at (z.center) {}; 21 \node[classB, xshift=-3.5mm, yshift=-1.5mm] at (z.center) {}; 22 \node[classB, xshift=-4.2mm, yshift=-3.4mm] at (z.center) {}; 23 \node[classB, xshift=-5.3mm, yshift=-2.8mm] at (z.center) {}; 24 \node[classB, xshift=-1.5mm, yshift=-0.2mm] at (z.center) {}; 25 \node[classB, xshift=-5.2mm, yshift=1mm] at (z.center) {}; 26 \node[classC, xshift=-1mm, yshift=2.5mm] at (z.center) {}; 27 \node[classC, xshift=1mm, yshift=3.5mm] at (z.center) {}; 28 \node[classC, xshift=-2.5mm, yshift=3.7mm] at (z.center) {}; 29 \node[classC, xshift=2.1mm, yshift=2.7mm] at (z.center) {}; 30 31 \coordinate (cx) at ($(bert.north east)!0.5!(bert.north)$); 32 \node[draw, inner sep=0, fit=(z.north) (encoder.south) (encoder.top left corner) (encoder.top right corner), anchor=south, label=center:Classifier] (classifier) at ($(bert.north) + (12mm, 1cm)$) {}; 33 \coordinate (tsw) at ($(classifier.north west) + (0, 1mm)$); 34 \coordinate (tne) at ($(classifier.north east) + (0, 3mm)$); 35 \node[draw, Dark2-B, inner sep=0, fit=(tsw) (tne)] (t) {}; 36 \node[classA] at ($(t.east)!0.1667!(t.west)$) {}; 37 \node[classB,yshift=-0.1mm] at ($(t.east)!0.5!(t.west)$) {}; 38 \node[classC] at ($(t.east)!0.8333!(t.west)$) {}; 39 \draw[thin, Dark2-B, faded] ($(t.north east)!0.3333!(t.north west)$) -- ($(t.south east)!0.3333!(t.south west)$); 40 \draw[thin, Dark2-B, faded] ($(t.north east)!0.6667!(t.north west)$) -- ($(t.south east)!0.6667!(t.south west)$); 41 42 \node[draw, thick, dashed, Dark2-A, fit=(z.north) (encoder.bottom right corner) (encoder.bottom left corner)] (f0) {}; 43 \node[fit=(t) (classifier)] (f1) {}; 44 \node[fit=(bert)] (f2) {}; 45 \draw[thick, dashed, Dark2-C] (f1.north west) -- (f1.west|-f2.north) -- (f2.north west) -- (f2.south west) -- (f2.south east) -- (f2.east|-f1.north) -- cycle; 46 47 \node[Dark2-A, anchor=south] at (f0.north) {\(\loss{ac}\)}; 48 \node[Dark2-C, anchor=south] at (f1.north) {\(\loss{rc}\)}; 49 50 \draw[arrow] (x) -- (bert); 51 \draw[arrow] (bert) -- (h); 52 \draw[arrow, rounded corners=1mm] (h) -- (h-|encoder) -- (encoder); 53 \draw[arrow, rounded corners=1mm] (h) -- (h-|classifier) -- (classifier); 54 \draw[arrow, rounded corners=1mm] (z) -- (z-|h) -- (h|-t) -- (t); 55 \end{tikzpicture}