# I need pointers on how to draw my neural-network diagram

Please help me draw this diagram. I'm practicing on TikZ, but it's so difficult. I don't know which library I should use, matrix/chain or another something ? I also don't know how to draw a circle connector like picture. Please help me draw this picture.

## 2 Answers

One option using TikZ; the only point that perhaps deserves some comment is the curved arrow, produced using an arc path and a decoration:

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{positioning,decorations.markings,calc}

\begin{document}

\begin{tikzpicture}[
node distance=2cm and 1cm,
mynode/.style={
draw,
text width=6cm,
align=center,
text height=3ex,
text depth=1.5ex,
}
]
\node[mynode] (out) {Output};
\node[mynode,text width=4cm,below=of out] (sh) {State/Hidden};
\node[mynode,below=of sh] (in) {Input};

\draw[-latex] (in) -- node[fill=white] {Weights $V$}(sh);
\draw[-latex] (sh) -- node[fill=white] {Weights $W$}(out);

\begin{scope}[radius=1.2cm]
\draw[
decoration={
markings,
mark=at position 0.999 with {\arrow{latex}}
},
postaction=decorate
]
(sh.16) arc[start angle=160,end angle=-150] (sh.-17);

\node[xshift=1.3cm,anchor=west,text width=2.8cm,align=center]
at (sh.east) {Weights $U$\\(dealyed)};
\end{scope}

\node[anchor=west,text width=4cm] at ([xshift=4cm] $(in.north)!0.5!(sh.south)$ ) {%
\displaystyle \begin{aligned} &y_j(t)=f(\mathrm{net}_j)\\ &\mathrm{net}_j(t)=\sum_i v_{ji} x_i(t)+\sum_h u_{jh}y_h(t-1)+\theta_j \end{aligned}
};

\node[anchor=west,text width=4cm] at ([xshift=4cm] $(sh.north)!0.5!(out.south)$ ) {%
\displaystyle \begin{aligned} &y_k(t)=g(\mathrm{net}_k)\\ &\mathrm{net}_k(t)=\sum_j w_{kj} y_j(t)+\theta_k \end{aligned}
};
\end{tikzpicture}

\end{document} With PSTricks. Just for fun!

\documentclass[preview,border={15pt 15pt 170pt 15pt}]{standalone}
\usepackage{pst-node}
\usepackage{amsmath}
\usepackage{palatino}
\begin{document}
\offinterlineskip
\psmatrix[mnode=r,rowsep=2.5cm]
\psframebox{\parbox{4cm}{\centering Output}}\\
\psframebox{\parbox{3cm}{\centering State/hidden}}\\
\psframebox{\parbox{5cm}{\centering Input}}
\endpsmatrix
\psset{arrows=->}
% bottom
\ncline{3,1}{2,1}\ncput*{Weights V}
\nbput[npos=.3,labelsep=1.5]{%
\parbox{4cm}{%
\displaystyle \begin{aligned} &y_j(t)=f(net_j)\\ &net_j(t)=\sum_i v_{ji} x_i(t)+\sum_h u_{jh}y_h(t-1)+\theta_j \end{aligned}
}}
% middle
\ncloop[angleA=90,angleB=-90,arm=.5,linearc=.3,loopsize=1.5,offset=-1]{2,1}{2,1}
\naput{\parbox{2cm}{Weights U\\\centering(delayed)}}
% top
\ncline{2,1}{1,1}\ncput*{Weights W}
\nbput[npos=.6,labelsep=1.5]{%
\parbox{4cm}{%
\displaystyle \begin{aligned} &y_k(t)=g(net_k)\\ &net_k(t)=\sum_j w_{kj} y_j(t)+\theta_k \end{aligned}
}}
\end{document} • Please check again the labels and equations, I might make typos. :-) – kiss my armpit Sep 13 '13 at 7:44
• @pgcftricks Can you make it by tikz? – phuong Sep 13 '13 at 10:10
• @phuong: no time to read the tikz manual right now. :-) – kiss my armpit Sep 13 '13 at 13:06