
- PyBrain 教程
- PyBrain - 首頁
- PyBrain - 概述
- PyBrain - 環境設定
- PyBrain - PyBrain 網路簡介
- PyBrain - 使用網路
- PyBrain - 使用資料集
- PyBrain - 資料集型別
- PyBrain - 匯入資料集資料
- PyBrain - 網路訓練資料集
- PyBrain - 測試網路
- 使用前饋網路
- PyBrain - 使用迴圈網路
- 使用最佳化演算法訓練網路
- PyBrain - 層
- PyBrain - 連線
- PyBrain - 強化學習模組
- PyBrain - API 和工具
- PyBrain - 示例
- PyBrain 有用資源
- PyBrain - 快速指南
- PyBrain - 有用資源
- PyBrain - 討論
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 是一種訓練器,它根據監督資料集(可能是順序的)訓練模組的引數,方法是反向傳播誤差(及時)。
我們建立了 2 個 SupervisedDataSet 類的資料集。我們使用的是 NOR 資料模型,如下所示:
A | B | A NOR B |
---|---|---|
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,這表明我們的測試資料與訓練的網路並不完全匹配。
廣告