PyBrain - API e ferramentas
Agora sabemos como construir uma rede e treiná-la. Neste capítulo, entenderemos como criar e salvar a rede e como usar a rede sempre que necessário.
Salvar e recuperar rede
Vamos usar o NetworkWriter e o NetworkReader da ferramenta Pybrain, ou seja, pybrain.tools.customxml.
Aqui está um exemplo prático do mesmo -
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')
A rede é salva em network.xml.
NetworkWriter.writeToFile(net, 'network.xml')
Para ler o xml quando necessário, podemos usar o código da seguinte maneira -
net = NetworkReader.readFrom('network.xml')
Aqui está o arquivo network.xml criado -
<?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
Abaixo está uma lista de APIs que usamos ao longo deste tutorial.
Para redes
activate(input)- Leva parâmetro, ou seja, o valor a ser testado. Ele retornará o resultado com base na entrada fornecida.
activateOnDataset(dataset) - Ele irá iterar sobre o conjunto de dados fornecido e retornar a saída.
addConnection(c) - Adiciona conexão à rede.
addInputModule(m) - Adiciona o módulo fornecido à rede e marca-o como módulo de entrada.
addModule(m) - Adiciona o módulo fornecido à rede.
addOutputModule(m) - Adiciona o módulo à rede e o marca como módulo de saída.
reset() - Reinicia os módulos e a rede.
sortModules()- Prepara a rede para ativação classificando internamente. Ele deve ser chamado antes da ativação.
Para conjuntos de dados supervisionados
addSample(inp, target) - Adiciona uma nova amostra de entrada e destino.
splitWithProportion(proportion=0.5) - Divide o conjunto de dados em duas partes, a primeira parte contendo os dados da parte da proporção e o próximo conjunto contendo o restante.
Para treinadores
trainUntilConvergence(dataset=None, maxEpochs=None, verbose=None, continueEpochs=10, validationProportion=0.25)- É usado para treinar o módulo no conjunto de dados até que ele converta. Se o conjunto de dados não for fornecido, ele tentará treinar no conjunto de dados treinado usado no início.