PyBrain - Lớp

Các lớp về cơ bản là một tập hợp các chức năng được sử dụng trên các lớp ẩn của mạng.

Chúng ta sẽ xem xét các chi tiết sau về các lớp trong chương này:

  • Lớp hiểu biết
  • Tạo lớp bằng Pybrain

Hiểu các lớp

Chúng tôi đã xem các ví dụ trước đó, trong đó chúng tôi đã sử dụng các lớp như sau:

  • TanhLayer
  • SoftmaxLayer

Ví dụ sử dụng TanhLayer

Dưới đây là một ví dụ mà chúng tôi đã sử dụng TanhLayer để xây dựng mạng -

testnetwork.py

from pybrain.tools.shortcuts import buildNetwork
from pybrain.structure import TanhLayer
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer

# Create a network with two inputs, three hidden, and one output
nn = buildNetwork(2, 3, 1, bias=True, hiddenclass=TanhLayer)

# Create a dataset that matches network input and output sizes:
norgate = SupervisedDataSet(2, 1)

# Create a dataset to be used for testing.
nortrain = SupervisedDataSet(2, 1)

# Add input and target values to dataset
# Values for NOR truth table
norgate.addSample((0, 0), (1,))
norgate.addSample((0, 1), (0,))
norgate.addSample((1, 0), (0,))
norgate.addSample((1, 1), (0,))

# Add input and target values to dataset
# Values for NOR truth table
nortrain.addSample((0, 0), (1,))
nortrain.addSample((0, 1), (0,))
nortrain.addSample((1, 0), (0,))
nortrain.addSample((1, 1), (0,))

#Training the network with dataset norgate.
trainer = BackpropTrainer(nn, norgate)

# will run the loop 1000 times to train it.
for epoch in range(1000):
   trainer.train()
trainer.testOnData(dataset=nortrain, verbose = True)

Đầu ra

Đầu ra cho đoạn mã trên như sau:

python testnetwork.py

C:\pybrain\pybrain\src>python testnetwork.py
Testing on data:
('out: ', '[0.887 ]')
('correct:', '[1 ]')
error: 0.00637334
('out: ', '[0.149 ]')
('correct:', '[0 ]')
error: 0.01110338
('out: ', '[0.102 ]')
('correct:', '[0 ]')
error: 0.00522736
('out: ', '[-0.163]')
('correct:', '[0 ]')
error: 0.01328650
('All errors:', [0.006373344564625953, 0.01110338071737218, 
   0.005227359234093431, 0.01328649974219942])
('Average error:', 0.008997646064572746)
('Max error:', 0.01328649974219942, 'Median error:', 0.01110338071737218)

Ví dụ sử dụng SoftMaxLayer

Dưới đây là một ví dụ mà chúng tôi đã sử dụng SoftmaxLayer để xây dựng mạng -

from pybrain.tools.shortcuts import buildNetwork
from pybrain.structure.modules import SoftmaxLayer
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer

# Create a network with two inputs, three hidden, and one output
nn = buildNetwork(2, 3, 1, bias=True, hiddenclass=SoftmaxLayer)

# Create a dataset that matches network input and output sizes:
norgate = SupervisedDataSet(2, 1)

# Create a dataset to be used for testing.
nortrain = SupervisedDataSet(2, 1)

# Add input and target values to dataset
# Values for NOR truth table
norgate.addSample((0, 0), (1,))
norgate.addSample((0, 1), (0,))
norgate.addSample((1, 0), (0,))
norgate.addSample((1, 1), (0,))

# Add input and target values to dataset
# Values for NOR truth table
nortrain.addSample((0, 0), (1,))
nortrain.addSample((0, 1), (0,))
nortrain.addSample((1, 0), (0,))
nortrain.addSample((1, 1), (0,))

#Training the network with dataset norgate.
trainer = BackpropTrainer(nn, norgate)

# will run the loop 1000 times to train it.
for epoch in range(1000):
trainer.train()
trainer.testOnData(dataset=nortrain, verbose = True)

Đầu ra

Kết quả như sau:

C:\pybrain\pybrain\src>python example16.py
Testing on data:
('out: ', '[0.918 ]')
('correct:', '[1 ]')
error: 0.00333524
('out: ', '[0.082 ]')
('correct:', '[0 ]')
error: 0.00333484
('out: ', '[0.078 ]')
('correct:', '[0 ]')
error: 0.00303433
('out: ', '[-0.082]')
('correct:', '[0 ]')
error: 0.00340005
('All errors:', [0.0033352368788838365, 0.003334842961037291, 
   0.003034328685718761, 0.0034000458892589056])
('Average error:', 0.0032761136037246985)
('Max error:', 0.0034000458892589056, 'Median error:', 0.0033352368788838365)

Tạo lớp trong Pybrain

Trong Pybrain, bạn có thể tạo lớp của riêng mình như sau:

Để tạo một lớp, bạn cần sử dụng NeuronLayer class làm lớp cơ sở để tạo tất cả các loại lớp.

Thí dụ

from pybrain.structure.modules.neuronlayer import NeuronLayer
class LinearLayer(NeuronLayer):
   def _forwardImplementation(self, inbuf, outbuf):
      outbuf[:] = inbuf
   def _backwardImplementation(self, outerr, inerr, outbuf, inbuf):
      inerr[:] = outer

Để tạo một Layer, chúng ta cần thực hiện hai phương thức: _nticImplementation ()_backwardImplementation () .

The _forwardImplementation() takes in 2 arguments inbufvà outbuf, là các mảng Scipy. Kích thước của nó phụ thuộc vào kích thước đầu vào và đầu ra của các lớp.

Các _backwardImplementation () được sử dụng để tính toán đạo hàm của đầu ra đối với các đầu vào cho trước với.

Vì vậy, để triển khai một lớp trong Pybrain, đây là khung của lớp lớp -

from pybrain.structure.modules.neuronlayer import NeuronLayer
class NewLayer(NeuronLayer):
   def _forwardImplementation(self, inbuf, outbuf):
      pass
   def _backwardImplementation(self, outerr, inerr, outbuf, inbuf):
      pass

Trong trường hợp bạn muốn triển khai một hàm đa thức bậc hai dưới dạng một lớp, chúng ta có thể làm như sau:

Coi chúng ta có một hàm đa thức là -

f(x) = 3x2

Đạo hàm của hàm đa thức trên sẽ như sau:

f(x) = 6 x

Lớp lớp cuối cùng cho hàm đa thức trên sẽ như sau:

testlayer.py

from pybrain.structure.modules.neuronlayer import NeuronLayer
class PolynomialLayer(NeuronLayer):
   def _forwardImplementation(self, inbuf, outbuf):
      outbuf[:] = 3*inbuf**2
   def _backwardImplementation(self, outerr, inerr, outbuf, inbuf):
      inerr[:] = 6*inbuf*outerr

Bây giờ chúng ta hãy sử dụng lớp được tạo như hình dưới đây -

testlayer1.py

from testlayer import PolynomialLayer
from pybrain.tools.shortcuts import buildNetwork
from pybrain.tests.helpers import gradientCheck

n = buildNetwork(2, 3, 1, hiddenclass=PolynomialLayer)
n.randomize()

gradientCheck(n)

GradientCheck () sẽ kiểm tra xem lớp có hoạt động tốt hay không. Chúng ta cần chuyển mạng nơi lớp được sử dụng đến gradientCheck (n). Nó sẽ cho kết quả là “Perfect Gradient” nếu lớp hoạt động tốt.

Đầu ra

C:\pybrain\pybrain\src>python testlayer1.py
Perfect gradient