Pybrain-working-with-feed-forward-networks

提供:Dev Guides
移動先:案内検索

PyBrain-フィードフォワードネットワークの使用

フィードフォワードネットワークは、ノード間の情報が順方向に移動し、決して逆方向に移動しないニューラルネットワークです。 フィードフォワードネットワークは、人工ニューラルネットワークで利用可能なネットワークの中で最初で最も単純なネットワークです。 情報は、入力ノードから、非表示ノードの隣に、さらに出力ノードに渡されます。

この章では、次の方法について説明します-

  • フィードフォワードネットワークを作成する
  • 接続とモジュールをFFNに追加する

フィードフォワードネットワークの作成

選択したpython IDE、つまりPyCharmを使用できます。 これでは、Visual Studio Codeを使用してコードを記述し、ターミナルで同じものを実行します。

フィードフォワードネットワークを作成するには、以下に示すように pybrain.structure からインポートする必要があります-

ffn.py

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

以下に示すようにffn.pyを実行します-

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

フィードフォワードネットワークにモジュールと接続を追加していません。 したがって、ネットワークには、モジュールと接続の空の配列が表示されます。

モジュールと接続の追加

まず、入力、非表示、出力の各レイヤーを作成し、以下に示すようにモジュールに追加します-

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)

出力

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

モジュールと接続は空のままです。 以下に示すように作成されたモジュールへの接続を提供する必要があります-

以下に、入力層、非表示層、出力層の間に接続を作成し、ネットワークに接続を追加するコードを示します。

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)

出力

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

まだモジュールと接続を取得できません。 ここで最終ステップを追加しましょう。つまり、以下に示すようにsortModules()メソッドを追加する必要があります-

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)

出力

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

これで、feedforwardnetworkのモジュールと接続の詳細を確認できます。