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