6

PyBrainのドキュメントBuilding Networks with Modules and Connectionsに従って、(buildNetwork ショートカットを使用するのとは対照的に) ニューラル ネットワークを部分的に構築しています。単純な 3 層 (入力、非表示、出力) のニューラル ネットワークを構築しています。バイアスユニットを正しく追加するにはどうすればよいですか?

BiasUnit次のようにモジュールを構築すると思います。

b = BiasUnit(name='bias')
network.addModule(b)

これは正しい方法ですか?FullConnectionオブジェクトを作成する必要がありますか? もしそうなら、何を接続すればよいですか?

4

2 に答える 2

10

実現されたPyBrainはオープンソースであり、Pythonディレクトリにソースコードがあります。C:\ Python27 \ Lib \ site-packages \ pybrain \ tools\shortcuts.pyファイルを開きました。このファイル内でbuildNetwork関数を見つけ、BiasUnitがどのように追加されるかを確認しました。関連するコードは次のとおりです。

...
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
...

基本的には、単一のBiasUnitを作成し、それを各非表示レイヤーに接続し、オプションで出力レイヤーにも接続するように見えます。

于 2012-04-12T00:31:45.710 に答える
1

ここに簡単な例があります:

n = RecurrentNetwork()
n.addModule(TanhLayer(hsize, name = 'h'))
n.addModule(BiasUnit(name = 'bias'))
n.addOutputModule(LinearLayer(1, name = 'out'))
n.addConnection(FullConnection(n['bias'], n['h']))
n.addConnection(FullConnection(n['h'], n['out']))
n.sortModules()

レイヤーを効果的にバイアスのあるレイヤーにすることにBiasUnit接続されていることに注意してください。TanhLayerh

于 2015-11-12T16:51:08.213 に答える