2
0
Fork 0
mirror of https://github.com/MartinThoma/LaTeX-examples.git synced 2025-04-19 11:38:05 +02:00

Add neural networks

This commit is contained in:
Martin Thoma 2016-02-12 23:32:01 +01:00
parent 2d49f93b4d
commit 23e30e1351
8 changed files with 163 additions and 0 deletions

View file

@ -0,0 +1,35 @@
SOURCE = hopfield-network
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

View file

@ -0,0 +1,3 @@
Compiled example
----------------
![Example](hopfield-network.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View file

@ -0,0 +1,28 @@
\documentclass[varwidth=true, border=2pt]{standalone}
\usepackage{tikz}
\tikzstyle{neuron}=[draw,circle,minimum size=20pt,inner sep=0pt, fill=white]
\tikzstyle{stateTransition}=[very thick]
\tikzstyle{learned}=[text=red]
\begin{document}
\newcommand\n{5}
\begin{tikzpicture}[scale=1.3]
\begin{scope}[rotate=17]
%the multiplication with floats is not possible. Thus I split the loop in two.
\foreach \number in {1,...,\n}{
\node[neuron] (N-\number) at ({\number*(360/\n)}:1.5cm) {$x_\number$};
}
\foreach \number in {1,...,\n}{
\foreach \y in {1,...,\n}{
\draw[stateTransition] (N-\number) -- (N-\y);
}
}
\end{scope}
\begin{scope}[rotate=-1]
\draw[learned,stateTransition] (N-1) -- (N-2) node [midway,above=-0.15cm,sloped] {$w_{1,2}$};
\draw[learned,stateTransition] (N-1) -- (N-5) node [midway,above=-0.15cm,sloped] {$w_{1,5}$};
\end{scope}
\end{tikzpicture}
\end{document}

View file

@ -0,0 +1,35 @@
SOURCE = restricted-botzmann-machine
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

View file

@ -0,0 +1,3 @@
Compiled example
----------------
![Example](restricted-botzmann-machine.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View file

@ -0,0 +1,59 @@
\documentclass{article}
\usepackage[pdftex,active,tightpage]{preview}
\setlength\PreviewBorder{2mm}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{tikz}
\usetikzlibrary{shapes, calc, shapes, arrows, positioning}
\tikzstyle{neuron}=[draw,circle,minimum size=20pt,inner sep=0pt, fill=white]
\tikzstyle{stateTransition}=[thick]
\tikzstyle{learned}=[text=red]
\begin{document}
\begin{preview}
\begin{tikzpicture}[scale=2]
% \draw ;
\draw[fill=black!30, rounded corners] (-0.2, -0.2) rectangle (3.2, 0.2) {};
\draw[fill=black!30, rounded corners] (0.3, 0.8) rectangle (2.7, 1.2) {};
\node (v1)[neuron] at (0, 0) {$v_1$};
\node (v2)[neuron] at (1, 0) {$v_2$};
\node (v3)[neuron] at (2, 0) {$v_3$};
\node (v4)[neuron] at (3, 0) {$v_4$};
\node[right=0.1cm of v4] (v) {$\textbf{v} \in \{0, 1\}^4$};
\node[learned,below=0.1cm of v1] (bv1) {$b_{v_1}$};
\node[learned,below=0.1cm of v2] (bv2) {$b_{v_2}$};
\node[learned,below=0.1cm of v3] (bv3) {$b_{v_3}$};
\node[learned,below=0.1cm of v4] (bv4) {$b_{v_4}$};
\node (h1)[neuron] at (0.5, 1) {$h_1$};
\node (h2)[neuron] at (1.5, 1) {$h_2$};
\node (h3)[neuron] at (2.5, 1) {$h_3$};
\node[right=0.1cm of h3] (h) {$\textbf{h} \in \{0, 1\}^3$};
\node[learned,above=0.1cm of h1] (bh1) {$b_{h_1}$};
\node[learned,above=0.1cm of h2] (bh2) {$b_{h_2}$};
\node[learned,above=0.1cm of h3] (bh3) {$b_{h_3}$};
\node[learned] (W) at (3.5, 0.5) {$W \in \mathbb{R}^{3 \times 4}$};
\draw[learned,stateTransition] (v1) -- (h1) node [midway,above=-0.06cm,sloped] {$w_{1,1}$};
\draw[stateTransition] (v1) -- (h2) node [midway,above=-0.06cm,sloped] {};
\draw[stateTransition] (v1) -- (h3) node [midway,above=-0.06cm,sloped] {};
\draw[stateTransition] (v2) -- (h1) node [midway,above=-0.06cm,sloped] {};
\draw[stateTransition] (v2) -- (h2) node [midway,above=-0.06cm,sloped] {};
\draw[stateTransition] (v2) -- (h3) node [midway,above=-0.06cm,sloped] {};
\draw[stateTransition] (v3) -- (h1) node [midway,above=-0.06cm,sloped] {};
\draw[stateTransition] (v3) -- (h2) node [midway,above=-0.06cm,sloped] {};
\draw[stateTransition] (v3) -- (h3) node [midway,above=-0.06cm,sloped] {};
\draw[stateTransition] (v4) -- (h1) node [midway,above=-0.06cm,sloped] {};
\draw[stateTransition] (v4) -- (h2) node [midway,above=-0.06cm,sloped] {};
\draw[learned,stateTransition] (v4) -- (h3) node [midway,above=-0.06cm,sloped] {$w_{4,3}$};
\end{tikzpicture}
\end{preview}
\end{document}