2012-02-04 32 views
9

mam sieci neuronowej n pybrain, z dwoma wejściami, ukrytej warstwie i wyjście layer.I wykorzystać następujące pociąg:Jak mogę obliczyć lub monitorować trening sieci neuronowej w pybrain?

trainer = BackpropTrainer(net,ds) 
trainer.trainUntilConvergence() 

sieć jest siecią neuronową i DS są dane pociągu.

Moje pytanie brzmi, czy i jak można obliczyć czas potrzebny do ukończenia szkolenia lub w jaki sposób można monitorować postęp training.Thanks.

Odpowiedz

10

Można zawsze podklasy BackpropTrainer (kod źródłowy here) i zastąpić trainUntilConvergence przypadku korzystania maxEpochs, śledzić procentu kompletności używając proporcji między epokami i epok.

Jeśli nie używasz maxEpochs, zawsze możesz uzyskać domysły na temat liczby pozostałych epok w oparciu o średnią szybkość zmian w wartościach sprawdzania poprawności oraz rozmiar continueEpochs. Lub po prostu zbadać szybkość zmian w validationerrors. Jeśli chcesz mapować epoki do czasu, musisz profilować czas każdej epoki i przechowywać je.

+1

Idealnie byłoby chcesz użyć trainEpochs() zamiast modyfikowania trainUntilConvergence(). Trenuj X liczbę epok, wynik sprawdzenia, Pociąg x liczba epok. Powtarzaj aż do zbieżności lub maks. Epok. – NothingMore

2

nic do dodania do poprzedniego komentarza wyjątkiem kodu używam do niego:

maxepochs=20 
results=[] 
for i in range(len(maxepochs)): 
    aux = trainer.train() 
    results.extend(aux) 
    plt.figure() 
    plt.scatter(range(len(results[0])),results[0]) 
    plt.draw() 

Można by dostać nową działkę przy każdym cyklu. Nie jest bardzo miły, ale działa dla mnie.

Nadzieja bym pomóc

+0

maxepochs to int. Nie ma własności len. Czy chodziło Ci o results.append (aux)? – agcala

Powiązane problemy