1

Suppose we have built a feed forward network using Pybrain's SupervisedDataSet and buildNetwork functions. The architecture could be 10, 5, 2: 10 input nodes, 5 hidden nodes in a single hidden layer, and 2 output nodes.

>>> our_network = buildNetwork(10,5,2)
>>> for mod in our_network.modules:
...    for conn in our_network.connections[mod]:
...        conn.params

array([-0.82432749, -1.77414037, ... ,  1.96635753])

When examining a trained network with the above architecture, how may we interpret the output array conn.params? Examining the output of the above architecture will yield 50 connections/weights between the input and hidden layer. I'm interested in knowing which inputs are associated with the strongest connections. Specifically, is it safe to assume the first 5 array elements returned are associated with the connections between the first node at the input layer and the 5 hidden layer nodes?

I'm not gaining any insight via reverse engineering Pybrain for the past hour.

Mulloy
  • 101
  • 8

1 Answers1

1

Modules and connections are sorted in a unique way (evaluation order, with tie-breaking alphabetically, have a look at sortModules()). The global .params array is then just the concatenation of the (flattened) parameters of all those components.

See also this related question.

Community
  • 1
  • 1
schaul
  • 1,021
  • 9
  • 21