[英]How to train a neural network to supervised data set using pybrain black-box optimization?
我已經玩過pybrain,了解如何使用自定義架構生成神經網絡,並使用反向傳播算法將它們訓練到監督數據集。
但是我對優化算法以及任務,學習代理和環境的概念感到困惑。
例如:我如何實現神經網絡,如(1)使用pybrain遺傳算法(2)對XOR數據集進行分類?
(1) pybrain.tools.shortcuts.buildNetwork(2, 3, 1)
(2) pybrain.optimization.GA()
我終於解決了!! 一旦你知道如何,它總是很容易!
基本上,GA的第一個arg是適應度函數(在docs中稱為求值者),它必須將第二個參數(一個個體,在docs中稱為可評估)作為其唯一的arg。
在這個例子中將訓練到異或
from pybrain.datasets.classification import ClassificationDataSet
# below line can be replaced with the algorithm of choice e.g.
# from pybrain.optimization.hillclimber import HillClimber
from pybrain.optimization.populationbased.ga import GA
from pybrain.tools.shortcuts import buildNetwork
# create XOR dataset
d = ClassificationDataSet(2)
d.addSample([0., 0.], [0.])
d.addSample([0., 1.], [1.])
d.addSample([1., 0.], [1.])
d.addSample([1., 1.], [0.])
d.setField('class', [ [0.],[1.],[1.],[0.]])
nn = buildNetwork(2, 3, 1)
# d.evaluateModuleMSE takes nn as its first and only argument
ga = GA(d.evaluateModuleMSE, nn, minimize=True)
for i in range(100):
nn = ga.learn(0)[0]
上述腳本后的測試結果:
In [68]: nn.activate([0,0])
Out[68]: array([-0.07944574])
In [69]: nn.activate([1,0])
Out[69]: array([ 0.97635635])
In [70]: nn.activate([0,1])
Out[70]: array([ 1.0216745])
In [71]: nn.activate([1,1])
Out[71]: array([ 0.03604205])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.