python - data - valores de activación para todos los nodos en una red PyBrain
data mining with python (1)
Siento 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.
El problema es este:
Tengo una red de feedforward de tres capas (entrada, oculta, salida) construida y entrenada 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 que el código de ejemplo ayude mucho en este caso, pero aquí hay algunos de todos modos (con un conjunto de capacitación reducido):
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.
Parece que esto debería funcionar:
net[''in''].outputbuffer[net[''in''].offset]
net[''hidden0''].outputbuffer[net[''hidden0''].offset]
Puramente basado en mirar el código fuente .