PyBrain - Làm việc với các mạng định kỳ

Mạng lặp lại giống như mạng chuyển tiếp, chỉ khác là bạn cần nhớ dữ liệu ở mỗi bước. Lịch sử của mỗi bước phải được lưu lại.

Chúng ta sẽ học cách -

  • Tạo mạng định kỳ
  • Thêm mô-đun và kết nối

Tạo mạng lặp lại

Để tạo mạng lặp lại, chúng ta sẽ sử dụng lớp RecurrentNetwork như hình dưới đây:

rn.py

from pybrain.structure import RecurrentNetwork
recurrentn = RecurrentNetwork()
print(recurrentn)

python rn.py

C:\pybrain\pybrain\src>python rn.py
RecurrentNetwork-0
Modules:
[]
Connections:
[]
Recurrent Connections:
[]

Chúng ta có thể thấy một kết nối mới được gọi là Kết nối Định kỳ cho mạng định kỳ. Ngay bây giờ không có sẵn dữ liệu.

Bây giờ chúng ta hãy tạo các lớp và thêm vào các mô-đun và tạo kết nối.

Thêm mô-đun và kết nối

Chúng ta sẽ tạo các lớp, tức là đầu vào, ẩn và đầu ra. Các lớp sẽ được thêm vào mô-đun đầu vào và đầu ra. Tiếp theo, chúng ta sẽ tạo kết nối đầu vào đến ẩn, ẩn với đầu ra và kết nối lặp lại giữa ẩn với ẩn.

Đây là mã cho mạng định kỳ với các mô-đun và kết nối.

rn.py

from pybrain.structure import RecurrentNetwork
from pybrain.structure import LinearLayer, SigmoidLayer
from pybrain.structure import FullConnection
recurrentn = RecurrentNetwork()

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

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

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

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

print(recurrentn)

python rn.py

C:\pybrain\pybrain\src>python rn.py
RecurrentNetwork-6
Modules:
[<LinearLayer 'rn_in'>, <SigmoidLayer 'rn_hidden'>, 
   <LinearLayer 'rn_output'>]
Connections:
[<FullConnection 'FullConnection-4': 'rn_hidden' -> 'rn_output'>, 
   <FullConnection 'FullConnection-5': 'rn_in' -> 'rn_hidden'>]
Recurrent Connections:
[<FullConnection 'FullConnection-3': 'rn_hidden' -> 'rn_hidden'>]

Ở trên, chúng ta có thể thấy Mô-đun, Kết nối và Kết nối lặp lại.

Bây giờ chúng ta hãy kích hoạt mạng bằng cách kích hoạt như hình dưới đây -

rn.py

Thêm mã bên dưới vào mã đã tạo trước đó -

#activate network using activate() method
act1 = recurrentn.activate((2, 2))
print(act1)

act2 = recurrentn.activate((2, 2))
print(act2)

python rn.py

C:\pybrain\pybrain\src>python rn.py
[-1.24317586]
[-0.54117783]