2013-04-01 7 views
19

Grałem trochę pybrainem i rozumiem, jak generować sieci neuronowe za pomocą niestandardowych architektur i trenować je do nadzorowanych zestawów danych za pomocą algorytmu wstecznej propagacji.Jak wyszkolić sieć neuronową do nadzorowanego zestawu danych za pomocą optymalizacji czarnej skrzynki pybrain?

Jednak jestem zdezorientowany przez algorytmy optymalizacji i koncepcje zadań, agentów i środowisk.

Na przykład: Na przykład: Jak zaimplementować sieć neuronową, taką jak (1) do klasyfikacji zbioru danych XOR przy użyciu algorytmu genetycznego pybrain (2)?

(1) pybrain.tools.shortcuts.buildNetwork(2, 3, 1)

(2) pybrain.optimization.GA()

+0

Nie jesteś jedynym, który chciałby wiedzieć. –

Odpowiedz

20

I wreszcie pracował go !! To zawsze łatwe, gdy wiesz, jak!

Zasadniczo pierwszym argumentem dla GA jest funkcja fitness (zwana oceniającym w dokumentach), która jako drugi argument musi przyjąć drugi argument (osoba, którą można ocenić w dokumencie).

W tym przykładzie będzie trenować do XOR

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] 

wyniki testu po powyższym skrypcie:

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]) 
+0

Co robi tutaj GA? Xor jest znany z tego, że można go rozwiązać za pomocą prostego uczenia się wstecznego. –

+0

XOR to tylko przykładowy zestaw danych. Użyłem go, ponieważ jest dobrze znany, mały i prosty. GA i BP działają inaczej w zależności od problemu. GA są również dobre, ponieważ nie muszą być używane w połączeniu z siecią neuronową. –

+2

Zrobiłem twój kod, ale nie udało się zaklasyfikować XOR ... – SomethingSomething

Powiązane problemy