diff --git a/tikz/mlp-multilayer-perceptron/Makefile b/tikz/mlp-multilayer-perceptron/Makefile new file mode 100644 index 0000000..9cc0a28 --- /dev/null +++ b/tikz/mlp-multilayer-perceptron/Makefile @@ -0,0 +1,35 @@ +SOURCE = mlp-multilayer-perceptron +DELAY = 80 +DENSITY = 300 +WIDTH = 512 + +make: + pdflatex $(SOURCE).tex -output-format=pdf + make clean + +clean: + rm -rf $(TARGET) *.class *.html *.log *.aux *.data *.gnuplot + +gif: + pdfcrop $(SOURCE).pdf + convert -verbose -delay $(DELAY) -loop 0 -density $(DENSITY) $(SOURCE)-crop.pdf $(SOURCE).gif + make clean + +png: + make + make svg + inkscape $(SOURCE).svg -w $(WIDTH) --export-png=$(SOURCE).png + +transparentGif: + convert $(SOURCE).pdf -transparent white result.gif + make clean + +svg: + make + #inkscape $(SOURCE).pdf --export-plain-svg=$(SOURCE).svg + pdf2svg $(SOURCE).pdf $(SOURCE).svg + # Necessary, as pdf2svg does not always create valid svgs: + inkscape $(SOURCE).svg --export-plain-svg=$(SOURCE).svg + rsvg-convert -a -w $(WIDTH) -f svg $(SOURCE).svg -o $(SOURCE)2.svg + inkscape $(SOURCE)2.svg --export-plain-svg=$(SOURCE).svg + rm $(SOURCE)2.svg diff --git a/tikz/mlp-multilayer-perceptron/README.md b/tikz/mlp-multilayer-perceptron/README.md new file mode 100644 index 0000000..753d8c5 --- /dev/null +++ b/tikz/mlp-multilayer-perceptron/README.md @@ -0,0 +1,3 @@ +Compiled example +---------------- +![Example](mlp-multilayer-perceptron.png) diff --git a/tikz/mlp-multilayer-perceptron/mlp-multilayer-perceptron.png b/tikz/mlp-multilayer-perceptron/mlp-multilayer-perceptron.png new file mode 100644 index 0000000..d3beac5 Binary files /dev/null and b/tikz/mlp-multilayer-perceptron/mlp-multilayer-perceptron.png differ diff --git a/tikz/mlp-multilayer-perceptron/mlp-multilayer-perceptron.tex b/tikz/mlp-multilayer-perceptron/mlp-multilayer-perceptron.tex new file mode 100644 index 0000000..6939a9f --- /dev/null +++ b/tikz/mlp-multilayer-perceptron/mlp-multilayer-perceptron.tex @@ -0,0 +1,107 @@ +\documentclass{article} +\usepackage[pdftex,active,tightpage]{preview} +\setlength\PreviewBorder{2mm} + +\usepackage{amsmath} +\usepackage{tikz} +\usetikzlibrary{shapes, calc, shapes, arrows, snakes} +\newcommand{\width}{0.2} +\begin{document} +\begin{preview} +\tikzset{sigmoid/.style={path picture= { + \begin{scope}[x=1pt,y=10pt] + \draw plot[domain=-7:7] (\x,{1/(1 + exp(-\x))-0.5}); + \end{scope} + } + } +} + +\tikzset{relu/.style={path picture= { + \begin{scope}[x=7pt,y=6pt] + \draw plot[domain=-1:0] (\x,0); + \draw plot[domain=0:1] (\x,\x); + \end{scope} + } + } +} + +\tikzstyle{input}=[draw,fill=red!50,circle,minimum size=20pt,inner sep=0pt] +\tikzstyle{hidden}=[draw,fill=green!50,circle,minimum size=20pt,inner sep=0pt] +\tikzstyle{output}=[draw,fill=white,circle,minimum size=20pt,inner sep=0pt] +\tikzstyle{bias}=[draw,dashed,fill=gray!50,circle,minimum size=20pt,inner sep=0pt] +\tikzstyle{layer}=[fill=gray!70] + +\tikzstyle{stateTransition}=[->, thick] + +\begin{tikzpicture}[scale=2] + \fill[layer] (-\width,-1.7) rectangle (\width,1.7); + \fill[layer] (1+-\width,-1.7) rectangle (1+\width,1.7); + \fill[layer] (2+-\width,-1.7) rectangle (2+\width,1.7); + \fill[layer] (3+-\width,-1.7) rectangle (3+\width,1.7); + \node (l1label) at (0, -1.9) {3}; + \node (l2label) at (1, -1.9) {64}; + \node (l3label) at (2, -1.9) {64}; + \node (l4label) at (3, -1.9) {1}; + \node (r)[input,fill=red] at (0, 1) {R}; + \node (g)[input,fill=green] at (0, 0) {G}; + \node (b)[input,fill=blue] at (0,-1) {B}; + + \node (h11)[hidden, sigmoid] at (1, 1.5) {}; + \node (h12)[hidden, sigmoid] at (1, 0.5) {}; + \node[circle, inner sep=0] (h13) at (1,-0.5) {\vdots}; + \node (h14)[hidden, sigmoid] at (1,-1.5) {}; + \node (h21)[hidden, relu] at (2, 1.5) {}; + \node (h22)[hidden, relu] at (2, 0.5) {}; + \node[circle, inner sep=0] (h23) at (2,-0.5) {\vdots}; + \node (h24)[hidden, relu] at (2,-1.5) {}; + + \node (o1)[output, sigmoid] at (3,0) {}; + + \draw[stateTransition] (r) -- (h11) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (r) -- (h12) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (r) -- (h13) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (r) -- (h14) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (g) -- (h11) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (g) -- (h12) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (g) -- (h13) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (g) -- (h14) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (b) -- (h11) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (b) -- (h12) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (b) -- (h13) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (b) -- (h11) node [midway,above=-0.06cm] {}; + + \draw[stateTransition] (h11) -- (h21) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (h11) -- (h22) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (h11) -- (h23) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (h11) -- (h24) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (h12) -- (h21) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (h12) -- (h22) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (h12) -- (h23) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (h12) -- (h24) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (h13) -- (h21) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (h13) -- (h22) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (h13) -- (h23) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (h13) -- (h24) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (h14) -- (h21) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (h14) -- (h22) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (h14) -- (h23) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (h14) -- (h21) node [midway,above=-0.06cm] {}; + + \draw[stateTransition] (h21) -- (o1) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (h22) -- (o1) node [midway,above=-0.10cm] {}; + \draw[stateTransition] (h23) -- (o1) node [midway,above=-0.06cm] {}; + \draw[stateTransition] (h24) -- (o1) node [midway,above=-0.06cm] {}; + + \draw [ + thick, + decoration={ + brace, + mirror, + raise=0.5cm + }, + decorate +] (1+-\width, -1.8) -- (2+\width, -1.8) +node [pos=0.5,anchor=north,yshift=-0.55cm] {50\% dropout}; +\end{tikzpicture} +\end{preview} +\end{document}