Librerie: Rete neurale MLP di classe - pagina 2

 
elibrarius:

Confrontando i risultati dell'addestramento della tabella di moltiplicazione, la vostra rete perde notevolmente. Su ALGLIB la rete 2,5,1 per 100 epoche di addestramento(https://www.mql5.com/ru/forum/8265/page2) dà risposte migliori della vostra con 1000000 epoche. Anche la velocità di calcolo di 10000000000 epoche non è piacevole.

A quanto pare il metodo di apprendimento non è molto efficiente. Ma comunque - grazie per il vostro lavoro, è più facile da capire in un piccolo codice che in ALGLIB. Ma dobbiamo ancora fare un passo avanti.

Un confronto sbagliato, tutti i 100 esempi sono mostrati nella variante alglib per l'apprendimento, ecco perché le risposte sono più corrette. Penso che se si riducono gli esempi con le risposte in alglib, i risultati non saranno migliori.

 

Ciao, ho apprezzato molto il fatto che tu abbia dedicato del tempo a creare questa libreria nativa!

Ho provato a fare una codifica a caldo e ho aggiunto relu al livello nascosto e una funzione Softmax alla chiamata del livello di uscita. Funziona e produce un risultato totale del 100%.

Ma l'addestramento si è incasinato, anche quando si è passati di nuovo a Sigmoud, iRprop non è adatto alla classificazione? Fornisce praticamente lo stesso risultato indipendentemente dall'input. A volte cambia, ma non molto.


Seconda domanda: ho visto che Tanh e Sigmod sono trattati in modo diverso nel metodo Lern, non ho ancora capito questa parte del codice, ma quale dei due è appropriato per Relu?

 
Grazie per questo fantastico contributo... Potresti spiegarmi come posso determinare l'errore permissivo?
 
northedan:
Grazie per questo fantastico contributo... Potresti spiegarmi come posso determinare l'errore permissivo?
//+------------------------------------------------------------------+
//| Imparare|
//+------------------------------------------------------------------+
void CNetMLP::Learn(int c_npat,       // numero di schemi didattici
                    double &c_inp[],  // dati di ingresso
                    double &c_res[],  // dati in uscita
                    int c_nep,        // numero di epoche di apprendimento
                    double c_err)     // errore ammissibile