これは些細なことだと思いますが、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
この場合、必要な機能は、非表示レイヤーのアクティブ化値のリストを印刷することです。