\begin{tikzpicture}

\tikzstyle{elementnode} = [anchor=center,draw=gray,minimum size=0.6em,inner sep=0.1pt]

\begin{scope}[scale=1.0]
\foreach \i / \j in
    {0/4, 1/4, 2/4, 3/4, 4/4, 5/4, 6/4, 7/4,
    0/3, 1/3, 2/3, 3/3, 4/3, 5/3, 6/3, 7/3,
    0/2, 1/2, 2/2, 3/2, 4/2, 5/2, 6/2, 7/2,
    0/1, 1/1, 2/1, 3/1, 4/1, 5/1, 6/1, 7/1,
    0/0, 1/0, 2/0, 3/0, 4/0, 5/0, 6/0, 7/0}
    \node[elementnode] (a\i\j) at (0.6em*\i,0.6em*\j) {};

\foreach \i / \j in
    {0/4, 1/4, 2/4, 3/4, 4/4, 5/4, 6/4, 7/4,
    0/3, 1/3, 2/3, 3/3, 4/3, 5/3, 6/3, 7/3,
    0/2, 1/2, 2/2, 3/2, 4/2, 5/2, 6/2, 7/2,
    0/1, 1/1, 2/1, 3/1, 4/1, 5/1, 6/1, 7/1,
    0/0, 1/0, 2/0, 3/0, 4/0, 5/0, 6/0, 7/0}
    \node[elementnode,fill=orange!15] (b\i\j) at (0.6em*\i+5.5em,0.6em*\j) {};


\node [anchor=south west,minimum height=0.5em,minimum width=4.8em,inner sep=0.1pt,very thick,blue!60,draw] (n1) at ([xshift=0em,yshift=0em]a01.south west) {};
\node [anchor=north west,minimum height=0.5em,minimum width=4.8em,inner sep=0.1pt,very thick,red!60,draw] (n2) at ([xshift=0em,yshift=0em]a02.north west) {};
\node [anchor=west,minimum height=0.6em,minimum width=0.6em,inner sep=0.1pt,very thick,blue!60,draw] (n3) at ([xshift=0em,yshift=0em]b21.west) {};
\node [anchor=west,minimum height=0.6em,minimum width=0.6em,inner sep=0.1pt,very thick,red!60,draw] (n4) at ([xshift=0em,yshift=0em]b42.west) {};

\draw [-,very thick,dotted,blue!60] ([xshift=0em,yshift=0em]n1.south east) -- ([xshift=0em,yshift=0em]n3.south west);
\draw [-,very thick,dotted,blue!60] ([xshift=0em,yshift=0em]n1.north east) -- ([xshift=0em,yshift=0em]n3.north west);
\draw [-,very thick,dotted,red!60] ([xshift=0em,yshift=0em]n2.south east) -- ([xshift=0em,yshift=0em]n4.south west);
\draw [-,very thick,dotted,red!60] ([xshift=0em,yshift=0em]n2.north east) -- ([xshift=0em,yshift=0em]n4.north west);

\node [anchor=north] (l1) at ([xshift=0.5em,yshift=-1em]a70.south){\footnotesize {(a)标准自注意力模型}};
\node [anchor=south,rotate=90] (l2) at ([xshift=0em,yshift=0em]a02.west){\scriptsize {注意力头}};
\node [anchor=south] (l2) at ([xshift=0em,yshift=0em]a44.north){\scriptsize {句子长度}};

\end{scope}

\begin{scope}[scale=1.0,xshift=4.6cm]
\foreach \i / \j in
    {0/4, 1/4, 2/4, 3/4, 4/4, 5/4, 6/4, 7/4,
    0/3, 1/3, 2/3, 3/3, 4/3, 5/3, 6/3, 7/3,
    0/2, 1/2, 2/2, 3/2, 4/2, 5/2, 6/2, 7/2,
    0/1, 1/1, 2/1, 3/1, 4/1, 5/1, 6/1, 7/1,
    0/0, 1/0, 2/0, 3/0, 4/0, 5/0, 6/0, 7/0}
    \node[elementnode] (a\i\j) at (0.6em*\i,0.6em*\j) {};

\foreach \i / \j in
    {0/4, 1/4, 2/4, 3/4, 4/4, 5/4, 6/4, 7/4,
    0/3, 1/3, 2/3, 3/3, 4/3, 5/3, 6/3, 7/3,
    0/2, 1/2, 2/2, 3/2, 4/2, 5/2, 6/2, 7/2,
    0/1, 1/1, 2/1, 3/1, 4/1, 5/1, 6/1, 7/1,
    0/0, 1/0, 2/0, 3/0, 4/0, 5/0, 6/0, 7/0}
    \node[elementnode,fill=orange!15] (b\i\j) at (0.6em*\i+5.5em,0.6em*\j) {};


\node [anchor=south west,minimum height=0.5em,minimum width=3em,inner sep=0.1pt,very thick,blue!60,draw] (n1) at ([xshift=0em,yshift=0em]a01.south west) {};
\node [anchor=north west,minimum height=0.5em,minimum width=3em,inner sep=0.1pt,very thick,red!60,draw] (n2) at ([xshift=0em,yshift=0em]a22.north west) {};
\node [anchor=west,minimum height=0.6em,minimum width=0.6em,inner sep=0.1pt,very thick,blue!60,draw] (n3) at ([xshift=0em,yshift=0em]b21.west) {};
\node [anchor=west,minimum height=0.6em,minimum width=0.6em,inner sep=0.1pt,very thick,red!60,draw] (n4) at ([xshift=0em,yshift=0em]b42.west) {};

\draw [-,very thick,dotted,blue!60] ([xshift=0em,yshift=0em]n1.south east) -- ([xshift=0em,yshift=0em]n3.south west);
\draw [-,very thick,dotted,blue!60] ([xshift=0em,yshift=0em]n1.north east) -- ([xshift=0em,yshift=0em]n3.north west);
\draw [-,very thick,dotted,red!60] ([xshift=0em,yshift=0em]n2.south east) -- ([xshift=0em,yshift=0em]n4.south west);
\draw [-,very thick,dotted,red!60] ([xshift=0em,yshift=0em]n2.north east) -- ([xshift=0em,yshift=0em]n4.north west);

\node [anchor=north] (l1) at ([xshift=0.5em,yshift=-1em]a70.south){\footnotesize {(b)一维卷积注意力模型}};
\node [anchor=south,rotate=90] (l2) at ([xshift=0em,yshift=0em]a02.west){\scriptsize {注意力头}};
\node [anchor=south] (l2) at ([xshift=0em,yshift=0em]a44.north){\scriptsize {句子长度}};

\end{scope}

\begin{scope}[scale=1.0,xshift=9.2cm]
\foreach \i / \j in
    {0/4, 1/4, 2/4, 3/4, 4/4, 5/4, 6/4, 7/4,
    0/3, 1/3, 2/3, 3/3, 4/3, 5/3, 6/3, 7/3,
    0/2, 1/2, 2/2, 3/2, 4/2, 5/2, 6/2, 7/2,
    0/1, 1/1, 2/1, 3/1, 4/1, 5/1, 6/1, 7/1,
    0/0, 1/0, 2/0, 3/0, 4/0, 5/0, 6/0, 7/0}
    \node[elementnode] (a\i\j) at (0.6em*\i,0.6em*\j) {};

\foreach \i / \j in
    {0/4, 1/4, 2/4, 3/4, 4/4, 5/4, 6/4, 7/4,
    0/3, 1/3, 2/3, 3/3, 4/3, 5/3, 6/3, 7/3,
    0/2, 1/2, 2/2, 3/2, 4/2, 5/2, 6/2, 7/2,
    0/1, 1/1, 2/1, 3/1, 4/1, 5/1, 6/1, 7/1,
    0/0, 1/0, 2/0, 3/0, 4/0, 5/0, 6/0, 7/0}
    \node[elementnode,fill=orange!15] (b\i\j) at (0.6em*\i+5.5em,0.6em*\j) {};


\node [anchor=south west,minimum height=1.8em,minimum width=3em,inner sep=0.1pt,very thick,blue!60,draw] (n1) at ([xshift=0em,yshift=0em]a00.south west) {};
\node [anchor=north west,minimum height=1.8em,minimum width=3em,inner sep=0.1pt,very thick,red!60,draw] (n2) at ([xshift=0em,yshift=0em]a23.north west) {};
\node [anchor=west,minimum height=0.6em,minimum width=0.6em,inner sep=0.1pt,very thick,blue!60,draw] (n3) at ([xshift=0em,yshift=0em]b21.west) {};
\node [anchor=west,minimum height=0.6em,minimum width=0.6em,inner sep=0.1pt,very thick,red!60,draw] (n4) at ([xshift=0em,yshift=0em]b42.west) {};

\draw [-,very thick,dotted,blue!60] ([xshift=0em,yshift=0em]n1.south east) -- ([xshift=0em,yshift=0em]n3.south west);
\draw [-,very thick,dotted,blue!60] ([xshift=0em,yshift=0em]n1.north east) -- ([xshift=0em,yshift=0em]n3.north west);
\draw [-,very thick,dotted,red!60] ([xshift=0em,yshift=0em]n2.south east) -- ([xshift=0em,yshift=0em]n4.south west);
\draw [-,very thick,dotted,red!60] ([xshift=0em,yshift=0em]n2.north east) -- ([xshift=0em,yshift=0em]n4.north west);

\node [anchor=north] (l1) at ([xshift=0.5em,yshift=-1em]a70.south){\footnotesize {(c)二维卷积注意力模型}};
\node [anchor=south,rotate=90] (l2) at ([xshift=0em,yshift=0em]a02.west){\scriptsize {注意力头}};
\node [anchor=south] (l2) at ([xshift=0em,yshift=0em]a44.north){\scriptsize {句子长度}};

\end{scope}
\end{tikzpicture}