PyBrain - ชุดข้อมูลการฝึกอบรมบนเครือข่าย

จนถึงตอนนี้เราได้เห็นวิธีสร้างเครือข่ายและชุดข้อมูลแล้ว ในการทำงานกับชุดข้อมูลและเครือข่ายร่วมกันเราต้องทำด้วยความช่วยเหลือของผู้ฝึกสอน

ด้านล่างนี้เป็นตัวอย่างการทำงานเพื่อดูวิธีเพิ่มชุดข้อมูลลงในเครือข่ายที่สร้างขึ้นและได้รับการฝึกฝนและทดสอบในภายหลังโดยใช้ผู้ฝึกสอน

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)

ในการทดสอบเครือข่ายและชุดข้อมูลเราต้องใช้ BackpropTrainer BackpropTrainer เป็นเทรนเนอร์ที่ฝึกพารามิเตอร์ของโมดูลตามชุดข้อมูลภายใต้การดูแล (อาจเป็นลำดับ) โดย backpropagating ข้อผิดพลาด (ตามเวลา)

เราได้สร้างชุดข้อมูลของคลาส 2 ชุด - SupervisedDataSet เรากำลังใช้แบบจำลองข้อมูล NOR ซึ่งมีดังต่อไปนี้ -

นอร์ข
0 0 1
0 1 0
1 0 0
1 1 0

แบบจำลองข้อมูลข้างต้นใช้ในการฝึกอบรมเครือข่าย

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

ต่อไปนี้เป็นชุดข้อมูลที่ใช้ทดสอบ -

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

เทรนเนอร์ใช้ดังนี้ -

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

เอาต์พุต

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)

หากคุณตรวจสอบผลลัพธ์ข้อมูลการทดสอบเกือบจะตรงกับชุดข้อมูลที่เราให้ไว้ดังนั้นข้อผิดพลาดจึงเท่ากับ 0.008

ตอนนี้ให้เราเปลี่ยนข้อมูลการทดสอบและดูข้อผิดพลาดโดยเฉลี่ย เราได้เปลี่ยนผลลัพธ์ตามที่แสดงด้านล่าง -

ต่อไปนี้เป็นชุดข้อมูลที่ใช้ทดสอบ -

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

ตอนนี้ให้เราทดสอบ

เอาต์พุต

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)

เราได้รับข้อผิดพลาดเป็น 0.36 ซึ่งแสดงว่าข้อมูลการทดสอบของเราไม่ตรงกับเครือข่ายที่ได้รับการฝึกฝนอย่างสมบูรณ์