Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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}

enter image description here

Best regards.

share|improve this question

1 Answer 1

up vote 2 down vote accepted

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
        \advance\mycount by -1
        \multiply\mycount by 60
        \advance\mycount by 0
        \node[xshift=5cm, yshift=-2.5cm, hidden neuron] (N-\number) at (\the\mycount:3cm) {};
    }

    % hidden layer interconnections
    \foreach \number in {1,...,5}{
        \mycount=\number
        \advance\mycount by 1
        \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}

enter image description here

share|improve this answer
    
Thank you, that is what I was looking for :) –  Stefan R. Falk Jul 6 at 16:42

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.