2012-09-15 15 views
7

Creo que esto debería ser trivial, pero he tenido problemas para encontrar algo útil en la documentación de PyBrain, aquí o en otro lugar.valores de activación para todos los nodos en una red PyBrain

El problema es el siguiente:

Tengo tres capas (entrada, oculta, de salida) a la red de alimentación directa construido y entrenado en PyBrain. Cada capa tiene tres nodos. Quiero activar la red con entradas nuevas y almacenar los valores de activación resultantes de los nodos en la capa oculta. Por lo que puedo decir, net.activate() y net.activateOnDataset() solo devolverán los valores de activación de los nodos de capa de salida y son las únicas formas de activar una red.

¿Cómo puedo obtener las activaciones de capa oculta de una red PyBrain?

no estoy seguro de código de ejemplo ayudará mucho en este caso, pero aquí es un poco de todos modos (con un conjunto de entrenamiento corte hacia abajo):

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 

En este caso, la funcionalidad deseada es imprimir una lista de los valores de activación de la capa oculta

Respuesta

6

Parece que esto debería funcionar:

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

puramente basado en mirar the source code.

+0

Esto funcionó perfectamente. Muchas gracias. – dylanross

Cuestiones relacionadas