PyBrain - API e strumenti

Ora sappiamo come costruire una rete e addestrarla. In questo capitolo capiremo come creare e salvare la rete e come utilizzarla ogni volta che sarà necessario.

Salva e ripristina la rete

Utilizzeremo NetworkWriter e NetworkReader dallo strumento Pybrain, ovvero pybrain.tools.customxml.

Ecco un esempio funzionante dello stesso:

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 rete viene salvata all'interno di network.xml.

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

Per leggere l'xml quando richiesto possiamo usare il codice come segue:

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

Ecco il file network.xml creato -

<?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

Di seguito è riportato un elenco di API che abbiamo utilizzato in questo tutorial.

Per le reti

  • activate(input)- Prende il parametro, cioè il valore da testare. Restituirà il risultato in base all'input fornito.

  • activateOnDataset(dataset) - Itererà sul set di dati fornito e restituirà l'output.

  • addConnection(c) - Aggiunge la connessione alla rete.

  • addInputModule(m) - Aggiunge il modulo fornito alla rete e lo contrassegna come modulo di ingresso.

  • addModule(m) - Aggiunge il modulo dato alla rete.

  • addOutputModule(m) - Aggiunge il modulo alla rete e lo contrassegna come modulo di uscita.

  • reset() - Ripristina i moduli e la rete.

  • sortModules()- Prepara la rete per l'attivazione tramite smistamento interno. Deve essere chiamato prima dell'attivazione.

Per set di dati supervisionati

  • addSample(inp, target) - Aggiunge un nuovo campione di input e target.

  • splitWithProportion(proportion=0.5) - Divide il set di dati in due parti, la prima parte contenente i dati della parte proporzionale e la serie successiva contenente il restante.

Per i formatori

trainUntilConvergence(dataset=None, maxEpochs=None, verbose=None, continueEpochs=10, validationProportion=0.25)- Viene utilizzato per addestrare il modulo sul set di dati finché non converge. Se il set di dati non viene fornito, tenterà di eseguire il training sul set di dati addestrato utilizzato all'inizio.