7

これは些細なことだと思いますが、PyBrainのドキュメント、ここ、または他の場所で役立つものを見つけるのに苦労しました。

問題はこれです:

PyBrainで構築およびトレーニングされた3層(入力、非表示、出力)フィードフォワードネットワークがあります。各レイヤーには3つのノードがあります。新しい入力でネットワークをアクティブ化し、結果として得られたノードのアクティブ化値を隠れ層に保存したいと思います。私の知る限り、net.activate()とnet.activateOnDataset()は、出力レイヤーノードのアクティブ化値のみを返し、ネットワークをアクティブ化する唯一の方法です。

PyBrainネットワークの隠れ層のアクティベーションを取得するにはどうすればよいですか?

この場合、サンプルコードがそれほど役立つかどうかはわかりませんが、とにかくここにいくつかあります(カットダウントレーニングセットを使用):

from pybrain.tools.shortcuts import buildNetwork
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer

net = buildNetwork(3, 3, 3)

dataSet = SupervisedDataSet(3, 3)
dataSet.addSample((0, 0, 0), (0, 0, 0))
dataSet.addSample((1, 1, 1), (0, 0, 0))
dataSet.addSample((1, 0, 0), (1, 0, 0))
dataSet.addSample((0, 1, 0), (0, 1, 0))
dataSet.addSample((0, 0, 1), (0, 0, 1))

trainer = BackpropTrainer(net, dataSet)
trained = False
acceptableError = 0.001

# train until acceptable error reached
while trained == False :
    error = trainer.train()
    if error < acceptableError :
        trained = True

result = net.activate([0.5, 0.4, 0.7])
print result

この場合、必要な機能は、非表示レイヤーのアクティブ化値のリストを印刷することです。

4

1 に答える 1

6

これはうまくいくようです:

net['in'].outputbuffer[net['in'].offset]
net['hidden0'].outputbuffer[net['hidden0'].offset]

純粋にソースコードを見ることに基づいています。

于 2012-09-15T09:58:32.423 に答える