PyBrain - Verbindungen

Eine Verbindung funktioniert ähnlich wie eine Ebene. Ein einziger Unterschied besteht darin, dass die Daten in einem Netzwerk von einem Knoten zum anderen verschoben werden.

In diesem Kapitel lernen wir Folgendes kennen:

  • Verbindungen verstehen
  • Verbindungen herstellen

Verbindungen verstehen

Hier ist ein funktionierendes Beispiel für Verbindungen, die beim Erstellen eines Netzwerks verwendet werden.

Beispiel

ffy.py

from pybrain.structure import FeedForwardNetwork
from pybrain.structure import LinearLayer, SigmoidLayer
from pybrain.structure import FullConnection

network = FeedForwardNetwork()

#creating layer for input => 2 , hidden=> 3 and output=>1
inputLayer = LinearLayer(2)
hiddenLayer = SigmoidLayer(3)
outputLayer = LinearLayer(1)

#adding the layer to feedforward network
network.addInputModule(inputLayer)
network.addModule(hiddenLayer)
network.addOutputModule(outputLayer)

#Create connection between input ,hidden and output
input_to_hidden = FullConnection(inputLayer, hiddenLayer)
hidden_to_output = FullConnection(hiddenLayer, outputLayer)

#add connection to the network
network.addConnection(input_to_hidden)
network.addConnection(hidden_to_output)
network.sortModules()

print(network)

Ausgabe

C:\pybrain\pybrain\src>python ffn.py
FeedForwardNetwork-6
Modules:
[<LinearLayer 'LinearLayer-3'>, <SigmoidLayer 'SigmoidLayer-7'>, 
   <LinearLayer 'LinearLayer-8'>]
Connections:
[<FullConnection 'FullConnection-4': 'SigmoidLayer-7' -> 'LinearLayer-8'>, 
   <FullConnection 'FullConnection-5': 'LinearLayer-3' -> 'SigmoidLayer-7'>]

Verbindungen herstellen

In Pybrain können wir Verbindungen mithilfe des unten gezeigten Verbindungsmoduls erstellen.

Beispiel

connect.py

from pybrain.structure.connections.connection import Connection
class YourConnection(Connection):
   def __init__(self, *args, **kwargs):
      Connection.__init__(self, *args, **kwargs)
   def _forwardImplementation(self, inbuf, outbuf):
      outbuf += inbuf
   def _backwardImplementation(self, outerr, inerr, inbuf):
      inerr += outer

Um eine Verbindung herzustellen, gibt es zwei Methoden: _forwardImplementation () und _backwardImplementation () .

Die _forwardImplementation () wird mit dem Ausgabepuffer des eingehenden Moduls inbuf und dem Eingabepuffer des ausgehenden Moduls outbuf aufgerufen . Der Inbuf wird dem ausgehenden Modul Outbuf hinzugefügt .

Die _backwardImplementation () wird mit outerr , inerr und inbuf aufgerufen . Der ausgehende Modulfehler wird dem eingehenden Modulfehler in _backwardImplementation () hinzugefügt .

Lassen Sie uns jetzt die verwenden YourConnection in einem Netzwerk.

testconnection.py

from pybrain.structure import FeedForwardNetwork
from pybrain.structure import LinearLayer, SigmoidLayer
from connect import YourConnection

network = FeedForwardNetwork()

#creating layer for input => 2 , hidden=> 3 and output=>1
inputLayer = LinearLayer(2)
hiddenLayer = SigmoidLayer(3)
outputLayer = LinearLayer(1)

#adding the layer to feedforward network
network.addInputModule(inputLayer)
network.addModule(hiddenLayer)
network.addOutputModule(outputLayer)

#Create connection between input ,hidden and output
input_to_hidden = YourConnection(inputLayer, hiddenLayer)
hidden_to_output = YourConnection(hiddenLayer, outputLayer)

#add connection to the network
network.addConnection(input_to_hidden)
network.addConnection(hidden_to_output)
network.sortModules()

print(network)

Ausgabe

C:\pybrain\pybrain\src>python testconnection.py
FeedForwardNetwork-6
Modules:
[<LinearLayer 'LinearLayer-3'>, <SigmoidLayer 'SigmoidLayer-7'>, 
   <LinearLayer 'LinearLayer-8'>]
Connections:
[<YourConnection 'YourConnection-4': 'LinearLayer-3' -> 'SigmoidLayer-7'>, 
   <YourConnection 'YourConnection-5': 'SigmoidLayer-7' -> 'LinearLayer-8'>]