PyBrain - API y herramientas

Ahora sabemos cómo construir una red y entrenarla. En este capítulo, entenderemos cómo crear y guardar la red y cómo utilizarla cuando sea necesario.

Guardar y recuperar red

Vamos a hacer uso de NetworkWriter y NetworkReader de la herramienta Pybrain, es decir, pybrain.tools.customxml.

Aquí hay un ejemplo práctico de lo mismo:

from pybrain.tools.shortcuts import buildNetwork
from pybrain.tools.customxml import NetworkWriter
from pybrain.tools.customxml import NetworkReader

net = buildNetwork(2,1,1)
NetworkWriter.writeToFile(net, 'network.xml')
net = NetworkReader.readFrom('network.xml')

La red se guarda dentro de network.xml.

NetworkWriter.writeToFile(net, 'network.xml')

Para leer el xml cuando sea necesario, podemos usar el siguiente código:

net = NetworkReader.readFrom('network.xml')

Aquí está el archivo network.xml creado:

<?xml version="1.0" ?>
<PyBrain>
   <Network class="pybrain.structure.networks.feedforward.FeedForwardNetwork" name="FeedForwardNetwork-8">
      <name val="'FeedForwardNetwork-8'"/>
      <Modules>
         <LinearLayer class="pybrain.structure.modules.linearlayer.LinearLayer" inmodule="True" name="in">
            <name val="'in'"/>
            <dim val="2"/>
         </LinearLayer>
         
         <LinearLayer class="pybrain.structure.modules.linearlayer.LinearLayer" name="out" outmodule="True">
            <name val="'out'"/>
            <dim val="1"/>
         </LinearLayer>
         
         <BiasUnit class="pybrain.structure.modules.biasunit.BiasUnit" name="bias">
            <name val="'bias'"/>
         </BiasUnit>
         
         <SigmoidLayer class="pybrain.structure.modules.sigmoidlayer.SigmoidLayer" name="hidden0">
            <name val="'hidden0'"/>
            <dim val="1"/>
         </SigmoidLayer>
      </Modules>
      
      <Connections>
         <FullConnection class="pybrain.structure.connections.full.FullConnection" name="FullConnection-6">
            <inmod val="bias"/>
            <outmod val="out"/>
            <Parameters>[1.2441093186965146]</Parameters>
         </FullConnection>
         
         <FullConnection class="pybrain.structure.connections.full.FullConnection" name="FullConnection-7">
            <inmod val="bias"/>
            <outmod val="hidden0"/>
            <Parameters>[-1.5743530012126412]</Parameters>
         </FullConnection>
         
         <FullConnection class="pybrain.structure.connections.full.FullConnection" name="FullConnection-4">
            <inmod val="in"/>
            <outmod val="hidden0"/>
            <Parameters>[-0.9429546042034236, -0.09858196752687162]</Parameters>
         </FullConnection>
         
         <FullConnection class="pybrain.structure.connections.full.FullConnection" name="FullConnection-5">
            <inmod val="hidden0"/>
            <outmod val="out"/>
            <Parameters>[-0.29205472354634304]</Parameters>
         </FullConnection>
      </Connections>
      
   </Network>
</PyBrain>

API

A continuación, se muestra una lista de las API que hemos utilizado a lo largo de este tutorial.

Para redes

  • activate(input)- Toma parámetro, es decir, el valor a probar. Devolverá el resultado basado en la entrada dada.

  • activateOnDataset(dataset) - Iterará sobre el conjunto de datos proporcionado y devolverá el resultado.

  • addConnection(c) - Agrega conexión a la red.

  • addInputModule(m) - Agrega el módulo dado a la red y lo marca como módulo de entrada.

  • addModule(m) - Agrega el módulo dado a la red.

  • addOutputModule(m) - Agrega el módulo a la red y lo marca como módulo de salida.

  • reset() - Reinicia los módulos y la red.

  • sortModules()- Prepara la red para la activación ordenando internamente. Tiene que ser llamado antes de la activación.

Para conjuntos de datos supervisados

  • addSample(inp, target) - Agrega una nueva muestra de entrada y destino.

  • splitWithProportion(proportion=0.5) - Divide el conjunto de datos en dos partes, la primera parte contiene los datos de la parte proporcional y el siguiente conjunto contiene el restante.

Para entrenadores

trainUntilConvergence(dataset=None, maxEpochs=None, verbose=None, continueEpochs=10, validationProportion=0.25)- Se utiliza para entrenar el módulo en el conjunto de datos hasta que converja. Si no se proporciona el conjunto de datos, intentará entrenar en el conjunto de datos entrenado que se usó al principio.