PyBrain - Lavorare con reti feed-forward

Una rete feed-forward è una rete neurale, in cui le informazioni tra i nodi si muovono in avanti e non viaggeranno mai all'indietro. La rete Feed Forward è la prima e la più semplice tra le reti disponibili nella rete neurale artificiale. Le informazioni vengono passate dai nodi di input, accanto ai nodi nascosti e successivamente al nodo di output.

In questo capitolo discuteremo come:

  • Crea reti feed-forward
  • Aggiungi connessione e moduli a FFN

Creazione di una rete di feed forward

Puoi usare l'IDE Python di tua scelta, cioè PyCharm. In questo, stiamo usando Visual Studio Code per scrivere il codice e eseguiremo lo stesso nel terminale.

Per creare una rete feedforward, dobbiamo importarla da pybrain.structure come mostrato di seguito -

ffn.py

from pybrain.structure import FeedForwardNetwork
network = FeedForwardNetwork()
print(network)

Esegui ffn.py come mostrato di seguito -

C:\pybrain\pybrain\src>python ffn.py
FeedForwardNetwork-0
Modules:
[]
Connections:
[]

Non abbiamo aggiunto alcun modulo e collegamento alla rete feedforward. Quindi la rete mostra array vuoti per moduli e connessioni.

Aggiunta di moduli e connessioni

Per prima cosa creeremo livelli di input, nascosti e di output e aggiungeremo lo stesso ai moduli come mostrato di seguito -

ffy.py

from pybrain.structure import FeedForwardNetwork
from pybrain.structure import LinearLayer, SigmoidLayer
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)

print(network)

Produzione

C:\pybrain\pybrain\src>python ffn.py
FeedForwardNetwork-3
Modules:
[]
Connections:
[]

Stiamo ancora ottenendo i moduli e le connessioni vuoti. Dobbiamo fornire una connessione ai moduli creati come mostrato di seguito -

Ecco il codice in cui abbiamo creato una connessione tra i livelli di input, nascosto e di output e abbiamo aggiunto la connessione alla rete.

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)

print(network)

Produzione

C:\pybrain\pybrain\src>python ffn.py
FeedForwardNetwork-3
Modules:
[]
Connections:
[]

Non siamo ancora in grado di ottenere i moduli e le connessioni. Aggiungiamo ora il passaggio finale, cioè dobbiamo aggiungere il metodo sortModules () come mostrato di seguito -

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)

Produzione

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

Ora siamo in grado di vedere i moduli ei dettagli delle connessioni per feedforwardnetwork.