2012-10-30 10 views
5

mi chiedo se sto facendo qualcosa di sbagliato o se i risultati sono davvero così poveri. Consente di assumere le più semplici esempi NN come illustrato nella documentazione:risultati scarsi pybrain

>>>net = buildNetwork(2, 3, 1, bias=True) 
>>> ds = SupervisedDataSet(2, 1) 
>>> ds.addSample((0, 0), (0,)) 
>>> ds.addSample((0, 1), (1,)) 
>>> ds.addSample((1, 0), (1,)) 
>>> ds.addSample((1, 1), (0,)) 
>>> trainer = BackpropTrainer(net, ds) 
>>> trainer.trainUntilConvergence() 
>>> print net.activate((0,0)) 
>>> print net.activate((0, 1)) 
>>> print net.activate((1, 0)) 
>>> print net.activate((1, 1)) 

esempio

>>> print net.activate((1,0)) 
[ 0.37855891] 
>>> print net.activate((1,1)) 
[ 0.6592548] 

previsto era 0. So di poter arrotondare, ovviamente, ma ancora mi aspetterei la rete per essere molto più preciso per tale un semplice esempio. Può essere chiamato "funzionante" qui MA ho il sospetto che manchi qualcosa di importante perché questo è MOLTO inutilizzabile ...

Il fatto è che se si imposta verbose=True sul proprio trainer è possibile vedere errori piuttosto piccoli (come Errore totale: ,0532936260399)

vorrei assumere l'errore della rete è del 5%, allora come può essere molto largo nella funzione di attivazione dopo?

utilizzare pybrain per molto di più cosa complessa, ovviamente, ma ho lo stesso problema. Ottengo male il 50% dei miei campioni di test, anche se la rete dice che l'errore è pari a 0.09 circa.

Qualsiasi aiuto pls?

+0

possibile duplicato di formazione [Neural Network con PyBrain non convergerà ] (http://stackoverflow.com/questions/12050460/neural-network-training-with-pybrain-wont-converge) – PhoneixS

risposta

6

Una domanda simile può essere trovato here. Da lì, sembra che questa funzione di allenamento non sia applicabile qui perché non tutti i dati vengono utilizzati per la formazione, ma alcuni dati vengono utilizzati per la convalida incrociata. Prova ad aggiungere più punti dati al set di allenamento.

Inoltre, questo esempio sembra necessario disporre di un termine slancio per lavorare. C'è un esempio per addestrare un xor con pybrain, usando un diverso metodo di allenamento here che ha funzionato per me quando ho impostato il numero di livelli a 3. Questo utilizza un termine di 0,99.

vorrei pubblicare questo come un commento, perché non risponde pienamente alla domanda, ma non ho abbastanza punti per commentare ...

+0

hai ragione, ho bisogno di ridurre la porzione di dati utilizzata per la convalida – kosta5

Problemi correlati