Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating custom connectivity in PyBrain neural networks

Tags:

I want to create an artificial neural network (in PyBrain) that follows the following layout:

layout

However, I cannot find the proper way to achieve this. The only option that I see in the documentation is the way to create fully connected layers, which is not what I want: I want some of my input nodes to be connected to the second hidden layer and not to the first one.

like image 952
Boris Gorelik Avatar asked Apr 17 '11 09:04

Boris Gorelik


1 Answers

The solution is to use the connection type of your choice, but with slicing parameters: inSliceFrom, inSliceTo, outSliceFrom and outSliceTo. I agree the documentation should mention this, so far it's only in the Connection class' comments.

Here is example code for your case:

#create network and modules net = FeedForwardNetwork() inp = LinearLayer(9) h1 = SigmoidLayer(2) h2 = TanhLayer(2) outp = LinearLayer(1) # add modules net.addOutputModule(outp) net.addInputModule(inp) net.addModule(h1) net.addModule(h2) # create connections net.addConnection(FullConnection(inp, h1, inSliceTo=6)) net.addConnection(FullConnection(inp, h2, inSliceFrom=6)) net.addConnection(FullConnection(h1, h2)) net.addConnection(FullConnection(h2, outp)) # finish up net.sortModules() 
like image 152
schaul Avatar answered Oct 10 '22 08:10

schaul