convolution-layer.tex 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. \documentclass{standalone}
  2. \usepackage{amssymb}
  3. \usepackage{tikz}
  4. \usetikzlibrary{arrows.meta}
  5. \usetikzlibrary{decorations.pathreplacing}
  6. \begin{document}
  7. \newcommand{\distance}{6}
  8. \newcommand{\xup}{3.5}
  9. \newcommand{\yup}{6}
  10. \newcommand{\upsizex}{1}
  11. \newcommand{\upsizey}{2}
  12. \newcommand{\upshift}{3/4*\upsizey}
  13. \newcommand{\distancedots}{1}
  14. \begin{tikzpicture}
  15. % Print input feature maps
  16. \foreach \i in {0, 0.2, ..., 0.6} {
  17. \draw[fill=white] (0+\i, 0) -- (2+\i, 3) -- (2+\i, 7) -- (\i, 4) -- (\i, 0);
  18. }
  19. % Print filters
  20. \foreach \i in {0, 0.2, ..., 0.6, 1.3} {
  21. \draw[fill=white] (\xup+\i, \yup) -- (\xup+\upsizex+\i, \yup+\upshift) -- (\xup+\upsizex+\i, \yup+\upsizey+\upshift) -- (\xup+\i, \yup+\upsizey) -- (\xup+\i, \yup);
  22. \draw[fill=white] (\xup+\i, \yup) -- (\xup+\i+0.1, \yup) -- (\xup+\i+0.1, \yup+\upsizey) -- (\xup+\i, \yup+\upsizey) -- (\xup+\i, \yup);
  23. \draw[fill=white] (\xup+\i+0.1, \yup) -- (\xup+\upsizex+\i+0.1, \yup+\upshift) -- (\xup+\upsizex+\i+0.1, \yup+\upsizey+\upshift) -- (\xup+\i+0.1, \yup+\upsizey) -- (\xup+\i+0.1, \yup);
  24. \draw[fill=white] (\xup+\i, \yup+\upsizey) -- (\xup+\i+0.1, \yup+\upsizey) -- (\xup+\upsizex+\i+0.1, \yup+\upsizey+\upshift) -- (\xup+\upsizex+\i, \yup+\upsizey+\upshift) -- (\xup+\i, \yup+\upsizey);
  25. }
  26. \foreach \i in {0, 0.2, ..., 0.6, 1.2} {
  27. \draw[fill=white] (\distance+\i, 0) -- (\distance+2+\i, 3) -- (\distance+2+\i, 7) -- (\distance+\i, 4) -- (\distance+\i, 0);
  28. }
  29. \draw [decorate,decoration={brace,amplitude=+4pt,mirror},xshift=0pt,yshift=-2pt]
  30. (-0.1,0) -- (0.7,0) node [black,midway,yshift=-0.6cm, align=center] {\footnotesize$3$ feature maps\\\footnotesize(e.g. RGB)};
  31. \draw [decorate,decoration={brace,amplitude=+4pt,mirror},xshift=0pt,yshift=-2pt]
  32. (\distance-0.1,0) -- (\distance+1.3,0) node [black,midway,yshift=-0.6cm, align=center] {\footnotesize$n$ feature maps};
  33. \draw [decorate,decoration={brace,amplitude=+4pt},xshift=0pt,yshift=+2pt]
  34. (\xup-0.1+\upsizex,\yup+\upsizey+\upshift) -- (\xup+1.5+\upsizex,\yup+\upsizey+\upshift) node [black,midway,yshift=+0.6cm, align=center] {\footnotesize $n$ filters of\\\footnotesize size $3\times 3 \times 3$};
  35. \draw[very thick, ->,>=latex] (3, 4.5) [out=70, in=110] to (\distance-0.5, 4.5);
  36. \draw [color=white,decorate,decoration={brace,amplitude=+4pt, mirror},xshift=0pt,yshift=+2pt]
  37. (1.1, 0) -- (3.1, 3) node [sloped,black,midway,yshift=+0.6cm, align=center] {width $w$};
  38. \draw [color=white,decorate,decoration={brace,amplitude=+4pt, mirror},xshift=0pt,yshift=+2pt]
  39. (\distance+1.7, 0) -- (\distance+3.7, 3) node [sloped,black,midway,yshift=+0.6cm, align=center] {width $w$};
  40. \draw [decorate,decoration={brace,amplitude=+4pt},xshift=-2pt,yshift=0pt]
  41. (0, 0) -- (0, 4) node [sloped,black,midway,yshift=+0.6cm, align=center] {height $h$};
  42. \draw [decorate,decoration={brace,amplitude=+4pt},xshift=-2pt,yshift=0pt]
  43. (\distance, 0) -- (\distance, 4) node [sloped,black,midway,yshift=+0.6cm, align=center] {height $h$};
  44. \node at (-2.5,7) {\Large network};
  45. \node at (-2.5,2) {\Large data};
  46. \node at (\distance+0.95,3.9) {\dots};
  47. \node at (\distance+0.95,2) {\dots};
  48. \node at (\distance+0.95,0.1) {\dots};
  49. \node at (\xup+1.05,\yup+1.9) {\dots};
  50. \node at (\xup+1.05,\yup+1.0) {\dots};
  51. \node at (\xup+1.05,\yup+0.1) {\dots};
  52. \end{tikzpicture}
  53. \end{document}