max_pooling
\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{positioning}
\colorlet{myorange}{orange!70!red!60!black}
\begin{document}
\begin{tikzpicture}[line join=round,transform shape]
\def\in{{{12,5,8,3}, {1,8,4,13},{5,1,0,6},{7,1,2,9}}}
\def\pool{{{12,13},{7,9}}}
\pgfdeclarelayer{Original layer}
\pgfdeclarelayer{Result layer}
\pgfdeclarelayer{Kernel}
\pgfdeclarelayer{KernelOverlay}
\pgfdeclarelayer{Original2Kernel}
\pgfdeclarelayer{Kernel2Result}
\pgfsetlayers{Result layer, Kernel2Result, Kernel, Original layer, Original2Kernel, KernelOverlay}
\begin{pgfonlayer}{Original layer}
\begin{scope}[yslant=-.0,local bounding box=Ori]
\fill[red!20] (0,0) rectangle +(2,2);
\fill[green!20] (0,2) rectangle +(2,2);
\fill[blue!20] (2,0) rectangle +(2,2);
\fill[yellow!20] (2,2) rectangle +(2,2);
\draw[black] (0,0) grid (4,4);
\draw[black,very thick] (0,0) rectangle (4,4);
\foreach \i in {0,...,3}
{
\foreach \j in {0,...,3}
{
\pgfmathsetmacro{\x}{int(\in[\i][\j])}
\path (\i+.5,\j+.5) node{\x};
}
}
\path (Ori.north) node[above]{};
\end{scope}
\end{pgfonlayer}
\begin{pgfonlayer}{Kernel}
\begin{scope}[yslant=0,shift={(6,1)},
local bounding box=Ker]
\fill[red!20] (0,0) rectangle +(1,1);
\fill[green!20] (0,1) rectangle +(1,1);
\fill[blue!20] (1,0) rectangle +(1,1);
\fill[yellow!20] (1,1) rectangle +(1,1);
\draw[black] (0,0) grid (2,2);
\draw[black,very thick] (0,0) rectangle (2,2);
\foreach \i in {0,1}
{
\foreach \j in {0,1}
{
\pgfmathsetmacro{\x}{int(\pool[\i][\j])}
\path (\i+.5,\j+.5) node{\x};
}
}
\path (Ker.north) node[above=2mm]{};
\end{scope}
\draw[->,>=stealth](4.5,2) -- (5.5,2) node[midway, above] {max};
\end{pgfonlayer}
\end{tikzpicture}
\end{document}