Actually it's perfectly documented inside the test code.
See here on github.
Build a bi-directional Network for sequences (each sample a single
value) of length 20:
>>> n = BidirectionalNetwork(seqlen=20, inputsize=1,
It should have 2x1x5 + 2x1x5 + 2x5x5 = 70 weights
Now let's build a symmetric network:
>>> n = BidirectionalNetwork(seqlen=12, inputsize=2,
It should have 1x2x3 + 1x1x3 + 1x3x3 = 18 weights
A forward pass:
>>> from numpy import ones
>>> r = n.activate(ones(24))
The result should be symmetric (although the weights are random)
Check its gradient:
>>> from pybrain.tests import gradientCheck