2012-09-15 12 views
7

Czuję, że to powinno być trywialne, ale walczyłem, aby znaleźć coś przydatnego w dokumentacji PyBrain, tutaj lub gdziekolwiek indziej.wartości aktywacji dla wszystkich węzłów w sieci PyBrain

Problem jest taki:

Mam trzy warstwy (wejście, ukryte wyjścia) sieci feedforward zbudowany i wyszkolony w PyBrain. Każda warstwa ma trzy węzły. Chcę aktywować sieć nowymi wejściami i przechowywać wynikowe wartości aktywacji węzłów w ukrytej warstwie. O ile mogę powiedzieć, net.activate() i net.activateOnDataset() zwrócą tylko wartości aktywacji węzłów warstwy wyjściowej i są jedynymi sposobami aktywowania sieci.

Jak uzyskać dostęp do aktywacji ukrytej warstwy sieci PyBrain?

nie jestem pewien przykład kodu pomoże, że wiele w tym przypadku, ale oto niektóre zresztą (ze zbioru uczącego cut-dół):

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 

W tym przypadku pożądana funkcjonalność jest wydrukować lista wartości aktywacji ukrytej warstwy.

Odpowiedz

6

Wygląda jak to powinno działać:

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

oparte wyłącznie na patrząc na the source code.

+0

To działało idealnie. Dziękuję bardzo. – dylanross

Powiązane problemy