# Draw nodes in ring form

I want to use this drawing of a neural network and extend it to a recurrent neural network. To do so I'd like to arrange the hidden nodes to a ring and connect every hidden node with the other hidden nodes. This is a simple feed forward network I got from here. Could someone show me how I can accomplish what I need?

\documentclass{article}

\usepackage{tikz}
\begin{document}
\pagestyle{empty}

\def\layersep{2.5cm}

\begin{tikzpicture}[shorten >=1pt,->,draw=black!50, node distance=\layersep]
\tikzstyle{every pin edge}=[<-,shorten <=1pt]
\tikzstyle{neuron}=[circle,fill=black!25,minimum size=17pt,inner sep=0pt]
\tikzstyle{input neuron}=[neuron, fill=green!50];
\tikzstyle{output neuron}=[neuron, fill=red!50];
\tikzstyle{hidden neuron}=[neuron, fill=blue!50];
\tikzstyle{annot} = [text width=4em, text centered]

% Draw the input layer nodes
\foreach \name / \y in {1,...,4}
% This is the same as writing \foreach \name / \y in {1/1,2/2,3/3,4/4}
\node[input neuron, pin=left:Input \#\y] (I-\name) at (0,-\y) {};

% Draw the hidden layer nodes
\foreach \name / \y in {1,...,5}
\path[yshift=0.5cm]
node[hidden neuron] (H-\name) at (\layersep,-\y cm) {};

% Draw the output layer node
\node[output neuron,pin={[pin edge={->}]right:Output}, right of=H-3] (O) {};

% Connect every node in the input layer with every node in the
% hidden layer.
\foreach \source in {1,...,4}
\foreach \dest in {1,...,5}
\path (I-\source) edge (H-\dest);

% Connect every node in the hidden layer with the output layer
\foreach \source in {1,...,5}
\path (H-\source) edge (O);

% Annotate the layers
\node[annot,above of=H-1, node distance=1cm] (hl) {Hidden layer};
\node[annot,left of=hl] {Input layer};
\node[annot,right of=hl] {Output layer};
\end{tikzpicture}
% End of code
\end{document}


Best regards.

-

It is somehow unclear what you are asking. Do you want to have multiple hidden layers? Then how about output layer connections. I did something based on my understanding of your question. Please comment if it is not exactly what you want. My answer is based on your own code and this example.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary[topaths]

\newcount\mycount
\begin{document}
\begin{tikzpicture}[transform shape]
\tikzstyle{every pin edge}=[<-,shorten <=1pt]
\tikzstyle{neuron}=[circle,fill=black!25,minimum size=17pt,inner sep=0pt]
\tikzstyle{input neuron}=[neuron, fill=green!50];
\tikzstyle{output neuron}=[neuron, fill=red!50];
\tikzstyle{hidden neuron}=[neuron, fill=blue!50];
\tikzstyle{annot} = [text width=4em, text centered]

% input layer
\foreach \name / \y in {1,...,4}
\node[input neuron, pin=left:Input \#\y] (I-\name) at (0,-\y) {};

% hidden layer nodes
\foreach \number in {1,...,6}{
\mycount=\number
\multiply\mycount by 60
\node[xshift=5cm, yshift=-2.5cm, hidden neuron] (N-\number) at (\the\mycount:3cm) {};
}

% hidden layer interconnections
\foreach \number in {1,...,5}{
\mycount=\number
\foreach \numbera in {\the\mycount,...,6}{
\path (N-\number) edge[<->] (N-\numbera);
}
}

% output layer
\node[xshift=10cm, yshift=-2.5cm,output neuron,pin={[pin edge={->}]right:Output}] (O) {};

% input-hidden-output connections
\foreach \source in {1,...,4}
\foreach \dest in {3,4,5}
\path (I-\source) edge[->] (N-\dest);

\foreach \source in {1,2,6}
\path (N-\source) edge[->] (O);

\end{tikzpicture}
\end{document}


-
Thank you, that is what I was looking for :) –  Stefan R. Falk Jul 6 '14 at 16:42