From 87437a6052a78758d97e0eae95ce9ce20de77e64 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Wed, 31 May 2017 14:55:16 +0200 Subject: [PATCH] tikz/convolution-layer: Update --- tikz/convolution-layer/conv-layer.tex | 54 +++++++++++++++++++ tikz/convolution-layer/convolution-layer.png | Bin 29094 -> 22744 bytes tikz/convolution-layer/convolution-layer.tex | 52 +----------------- 3 files changed, 55 insertions(+), 51 deletions(-) create mode 100644 tikz/convolution-layer/conv-layer.tex diff --git a/tikz/convolution-layer/conv-layer.tex b/tikz/convolution-layer/conv-layer.tex new file mode 100644 index 0000000..142fe0c --- /dev/null +++ b/tikz/convolution-layer/conv-layer.tex @@ -0,0 +1,54 @@ +\newcommand{\distance}{6} +\newcommand{\xup}{3.5} +\newcommand{\yup}{6} +\newcommand{\upsizex}{1} +\newcommand{\upsizey}{2} +\newcommand{\upshift}{3/4*\upsizey} +\newcommand{\distancedots}{1} + +\begin{tikzpicture} + % Print input feature maps + \foreach \i in {0, 0.2, ..., 0.6} { + \draw[fill=white] (0+\i, 0) -- (2+\i, 3) -- (2+\i, 7) -- (\i, 4) -- (\i, 0); + } + + % Print filters + \foreach \i in {0, 0.2, ..., 0.6, 1.3} { + \draw[fill=white] (\xup+\i, \yup) -- (\xup+\upsizex+\i, \yup+\upshift) -- (\xup+\upsizex+\i, \yup+\upsizey+\upshift) -- (\xup+\i, \yup+\upsizey) -- (\xup+\i, \yup); + \draw[fill=white] (\xup+\i, \yup) -- (\xup+\i+0.1, \yup) -- (\xup+\i+0.1, \yup+\upsizey) -- (\xup+\i, \yup+\upsizey) -- (\xup+\i, \yup); + \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); + \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); + } + + \foreach \i in {0, 0.2, ..., 0.6, 1.2} { + \draw[fill=white] (\distance+\i, 0) -- (\distance+2+\i, 3) -- (\distance+2+\i, 7) -- (\distance+\i, 4) -- (\distance+\i, 0); + } + + \draw [decorate,decoration={brace,amplitude=+4pt,mirror},xshift=0pt,yshift=-2pt] +(-0.1,0) -- (0.7,0) node [black,midway,yshift=-0.6cm, align=center] {\footnotesize$3$ feature maps\\\footnotesize(e.g. RGB)}; + \draw [decorate,decoration={brace,amplitude=+4pt,mirror},xshift=0pt,yshift=-2pt] +(\distance-0.1,0) -- (\distance+1.3,0) node [black,midway,yshift=-0.6cm, align=center] {\footnotesize$n$ feature maps}; + \draw [decorate,decoration={brace,amplitude=+4pt},xshift=0pt,yshift=+2pt] +(\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 $k \times k \times 3$}; + \draw[very thick, ->,>=latex] (3, 4.5) [out=70, in=110] to (\distance-0.5, 4.5); + \draw [color=white,decorate,decoration={brace,amplitude=+4pt, mirror},xshift=0pt,yshift=+2pt] +(1.1, 0) -- (3.1, 3) node [sloped,black,midway,yshift=+0.6cm, align=center] {width $w$}; + \draw [color=white,decorate,decoration={brace,amplitude=+4pt, mirror},xshift=0pt,yshift=+2pt] +(\distance+1.7, 0) -- (\distance+3.7, 3) node [sloped,black,midway,yshift=+0.6cm, align=center] {width $w$}; + \draw [decorate,decoration={brace,amplitude=+4pt},xshift=-2pt,yshift=0pt] +(0, 0) -- (0, 4) node [sloped,black,midway,yshift=+0.6cm, align=center] {height $h$}; + \draw [decorate,decoration={brace,amplitude=+4pt},xshift=-2pt,yshift=0pt] +(\distance, 0) -- (\distance, 4) node [sloped,black,midway,yshift=+0.6cm, align=center] {height $h$}; + \node at (-2.5,7.5) {\Large neural}; + \node at (-2.5,7) {\Large network}; + \node at (-2.5,2) {\Large data}; + + \node at (+4.3,5.5) {apply}; + \node at (\distance+0.95,3.9) {\dots}; + \node at (\distance+0.95,2) {\dots}; + \node at (\distance+0.95,0.1) {\dots}; + + \node at (\xup+1.05,\yup+1.9) {\dots}; + \node at (\xup+1.05,\yup+1.0) {\dots}; + \node at (\xup+1.05,\yup+0.1) {\dots}; +\end{tikzpicture} diff --git a/tikz/convolution-layer/convolution-layer.png b/tikz/convolution-layer/convolution-layer.png index 5d4da38f210e13d9f03190f96af294cd3de5d956..bcb8e7f8cb62b48ad1a7edf5cd45a997b2e3b327 100644 GIT binary patch literal 22744 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 diff --git a/tikz/convolution-layer/convolution-layer.tex b/tikz/convolution-layer/convolution-layer.tex index eec1565..1039e40 100644 --- a/tikz/convolution-layer/convolution-layer.tex +++ b/tikz/convolution-layer/convolution-layer.tex @@ -5,55 +5,5 @@ \usetikzlibrary{decorations.pathreplacing} \begin{document} -\newcommand{\distance}{6} -\newcommand{\xup}{3.5} -\newcommand{\yup}{6} -\newcommand{\upsizex}{1} -\newcommand{\upsizey}{2} -\newcommand{\upshift}{3/4*\upsizey} -\newcommand{\distancedots}{1} - -\begin{tikzpicture} - % Print input feature maps - \foreach \i in {0, 0.2, ..., 0.6} { - \draw[fill=white] (0+\i, 0) -- (2+\i, 3) -- (2+\i, 7) -- (\i, 4) -- (\i, 0); - } - - % Print filters - \foreach \i in {0, 0.2, ..., 0.6, 1.3} { - \draw[fill=white] (\xup+\i, \yup) -- (\xup+\upsizex+\i, \yup+\upshift) -- (\xup+\upsizex+\i, \yup+\upsizey+\upshift) -- (\xup+\i, \yup+\upsizey) -- (\xup+\i, \yup); - \draw[fill=white] (\xup+\i, \yup) -- (\xup+\i+0.1, \yup) -- (\xup+\i+0.1, \yup+\upsizey) -- (\xup+\i, \yup+\upsizey) -- (\xup+\i, \yup); - \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); - \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); - } - - \foreach \i in {0, 0.2, ..., 0.6, 1.2} { - \draw[fill=white] (\distance+\i, 0) -- (\distance+2+\i, 3) -- (\distance+2+\i, 7) -- (\distance+\i, 4) -- (\distance+\i, 0); - } - - \draw [decorate,decoration={brace,amplitude=+4pt,mirror},xshift=0pt,yshift=-2pt] -(-0.1,0) -- (0.7,0) node [black,midway,yshift=-0.6cm, align=center] {\footnotesize$3$ feature maps\\\footnotesize(e.g. RGB)}; - \draw [decorate,decoration={brace,amplitude=+4pt,mirror},xshift=0pt,yshift=-2pt] -(\distance-0.1,0) -- (\distance+1.3,0) node [black,midway,yshift=-0.6cm, align=center] {\footnotesize$n$ feature maps}; - \draw [decorate,decoration={brace,amplitude=+4pt},xshift=0pt,yshift=+2pt] -(\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$}; - \draw[very thick, ->,>=latex] (3, 4.5) [out=70, in=110] to (\distance-0.5, 4.5); - \draw [color=white,decorate,decoration={brace,amplitude=+4pt, mirror},xshift=0pt,yshift=+2pt] -(1.1, 0) -- (3.1, 3) node [sloped,black,midway,yshift=+0.6cm, align=center] {width $w$}; - \draw [color=white,decorate,decoration={brace,amplitude=+4pt, mirror},xshift=0pt,yshift=+2pt] -(\distance+1.7, 0) -- (\distance+3.7, 3) node [sloped,black,midway,yshift=+0.6cm, align=center] {width $w$}; - \draw [decorate,decoration={brace,amplitude=+4pt},xshift=-2pt,yshift=0pt] -(0, 0) -- (0, 4) node [sloped,black,midway,yshift=+0.6cm, align=center] {height $h$}; - \draw [decorate,decoration={brace,amplitude=+4pt},xshift=-2pt,yshift=0pt] -(\distance, 0) -- (\distance, 4) node [sloped,black,midway,yshift=+0.6cm, align=center] {height $h$}; - \node at (-2.5,7) {\Large network}; - \node at (-2.5,2) {\Large data}; - \node at (\distance+0.95,3.9) {\dots}; - \node at (\distance+0.95,2) {\dots}; - \node at (\distance+0.95,0.1) {\dots}; - - \node at (\xup+1.05,\yup+1.9) {\dots}; - \node at (\xup+1.05,\yup+1.0) {\dots}; - \node at (\xup+1.05,\yup+0.1) {\dots}; -\end{tikzpicture} +\input{conv-layer} \end{document}