Zrealizowane PyBrain jest open source i mam kod źródłowy siedzi w moim katalogu Python. Otworzyłem plik C: \ Python27 \ Lib \ site-packages \ pybrain \ tools \ shortcuts.py. Wewnątrz tego pliku zlokalizowałem funkcję buildNetwork i zobaczyłem, jak dodaje ona BiasUnit. Odpowiedni kod jest tutaj:
...
n = Network()
# linear input layer
n.addInputModule(LinearLayer(layers[0], name='in'))
# output layer of type 'outclass'
n.addOutputModule(opt['outclass'](layers[-1], name='out'))
if opt['bias']:
# add bias module and connection to out module, if desired
n.addModule(BiasUnit(name='bias'))
if opt['outputbias']:
n.addConnection(FullConnection(n['bias'], n['out']))
# arbitrary number of hidden layers of type 'hiddenclass'
for i, num in enumerate(layers[1:-1]):
layername = 'hidden%i' % i
n.addModule(opt['hiddenclass'](num, name=layername))
if opt['bias']:
# also connect all the layers with the bias
n.addConnection(FullConnection(n['bias'], n[layername]))
# connections between hidden layers
...
Zasadniczo wygląda to tworzy jeden BiasUnit i łączy go z każdej warstwie ukrytej oraz ewentualnie do warstwy wyjściowej, jak również.
Tak samo jak uwielbiam Pythona, przerzuciłem się na używanie [fanntool] opartego na C (http://code.google.com/p/fanntool/), który wysysa PyBrain z wody pod względem wydajności . – User