PyBrain - Ağlarda Veri Kümelerinin Eğitimi

Şimdiye kadar, nasıl bir ağ ve bir veri kümesi oluşturulacağını gördük. Veri kümeleri ve ağlarla birlikte çalışmak için bunu eğitmenlerin yardımıyla yapmalıyız.

Aşağıda, oluşturulan ve daha sonra eğitmenler kullanılarak eğitilen ve test edilen ağa bir veri kümesinin nasıl ekleneceğini görmek için çalışan bir örnek verilmiştir.

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)

Ağı ve veri kümesini test etmek için BackpropTrainer'a ihtiyacımız var. BackpropTrainer, bir modülün parametrelerini denetlenen bir veri kümesine göre (potansiyel olarak sıralı) hataları geri yayarak (zaman içinde) eğiten bir eğiticidir.

2 sınıf veri kümesi oluşturduk - SupervisedDataSet. Aşağıdaki NOR veri modelini kullanıyoruz -

Bir B A NOR B
0 0 1
0 1 0
1 0 0
1 1 0

Yukarıdaki veri modeli, ağı eğitmek için kullanılır.

norgate = 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,))

Test etmek için kullanılan veri kümesi aşağıdadır -

# 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,))

Eğitmen şu şekilde kullanılır -

#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()

Veri kümesini test etmek için aşağıdaki kodu kullanabiliriz -

trainer.testOnData(dataset=nortrain, verbose = True)

Çıktı

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)

Çıkışı kontrol ederseniz, test verileri neredeyse sağladığımız veri kümesiyle eşleşir ve dolayısıyla hata 0,008'dir.

Şimdi test verilerini değiştirelim ve ortalama bir hata görelim. Çıkışı aşağıda gösterildiği gibi değiştirdik -

Test etmek için kullanılan veri kümesi aşağıdadır -

# 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), (0,))
norgate.addSample((0, 1), (1,))
norgate.addSample((1, 0), (1,))
norgate.addSample((1, 1), (0,))

Şimdi test edelim.

Çıktı

python testnework.py

C:\pybrain\pybrain\src>python testnetwork.py
Testing on data:
('out: ', '[0.988 ]')
('correct:', '[0 ]')
error: 0.48842978
('out: ', '[0.027 ]')
('correct:', '[1 ]')
error: 0.47382097
('out: ', '[0.021 ]')
('correct:', '[1 ]')
error: 0.47876379
('out: ', '[-0.04 ]')
('correct:', '[0 ]')
error: 0.00079160
('All errors:', [0.4884297811030845, 0.47382096780393873, 0.47876378995939756, 0
.0007915982149002194])
('Average error:', 0.3604515342703303)
('Max error:', 0.4884297811030845, 'Median error:', 0.47876378995939756)

Hatayı 0.36 olarak alıyoruz, bu da test verilerimizin eğitilen ağ ile tamamen eşleşmediğini gösteriyor.