PyBrain - API 和工具


现在我们知道如何构建网络并对其进行训练。在本章中,我们将了解如何创建和保存网络,以及如何在需要时使用网络。

保存和恢复网络

我们将使用 Pybrain 工具中的 NetworkWriter 和 NetworkReader,即 pybrain.tools.customxml。

这是一个相同的工作示例 -

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')

网络保存在network.xml中。

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

要在需要时读取 xml,我们可以使用如下代码 -

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

这是创建的 network.xml 文件 -

<?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 列表。

对于网络

  • activate(input) - 它需要参数,即要测试的值。它将根据给定的输入返回结果。

  • activateOnDataset(dataset) - 它将迭代给定的数据集并返回输出。

  • addConnection(c) - 添加到网络的连接。

  • addInputModule(m) - 添加给网络的模块并将其标记为输入模块。

  • addModule(m) - 将给定模块添加到网络中。

  • addOutputModule(m) - 将模块添加到网络并将其标记为输出模块。

  • reset() - 重置模块和网络。

  • sortModules() - 它通过内部排序为激活网络做好准备。必须在激活之前调用它。

对于监督数据集

  • addSample(inp, target) - 添加输入和目标的新样本。

  • splitWithProportion(proportion=0.5) - 将数据集分为两部分,第一部分包含比例部分数据,下一组包含剩余部分数据。

对于培训师

trainUntilConvergence(dataset=None, maxEpochs=None, verbose=None, continueEpochs=10,validationProportion=0.25) - 用于在数据集上训练模块直到收敛。如果未给出数据集,它将尝试在开始时使用的训练数据集上进行训练。