Una libreria rapida e gratuita per MT4, per la gioia dei neuralnetworkers - pagina 15

 
lasso >> :

Aggiungo. O nel caso di un incidente terminale. Ma una soluzione sembra essere stata trovata.

La domanda è diversa. Vladislav sembra che tu legga il codice C++ senza "intermediari".

Potresti commentare il problema delle risposte identiche del comitato di griglia e la corretta inizializzazione dei valori dei pesi? (dettagliato qui e altri registri, e qui una domanda sui pesi)

Ha guardato i codici. La randomizzazione è lì. Cosa non : poiché il C/C++ standard ha un generatore di numeri quasi casuali, si raccomanda di reinizializzare il kernel (seed - srand(int ) - spostare il punto di riferimento prima di ogni chiamata a rand())

int rand( void );
  Return Value 
rand returns a pseudorandom number, as described above. There is no error return.

  Remarks 
The rand function returns a pseudorandom integer in the range 0 to RAND_MAX (32767). 
Use the srand function to seed the pseudorandom- number generator before calling rand.

//------------------------------------------------

Sets a random starting point.


void srand(
   unsigned int seed 
);
  Parameters 
seed
Seed for random- number generation

  Remarks 
The srand function sets the starting point for generating a series of pseudorandom integers in the current thread. 
To reinitialize the generator, use 1 as the seed argument. Any other value for seed sets the generator to a random 
starting point. rand retrieves the pseudorandom numbers that are generated. 
Calling rand before any call to srand generates the same sequence as calling srand with seed passed as 1.

  


 
Henry_White писал(а) >>

Sì. Gli input sono diversi per ogni griglia, anche se questo non è cruciale. Puoi prendere un segnale standard, per esempio lo stesso RSI e una griglia, e ottenere comunque valori negativi a qualsiasi ingresso sulla forza bruta.

Inizializzazione iniziale delle scale -1, 1.

A proposito del profilo... Intendi il file risultante della rete addestrata?

No. Stiamo parlando di cose diverse. Ti ho chiesto delle uscite!? Per favore, guardate qui. Cioè abbiamo un comitato di 16 reti, le inizializziamo con pesi casuali, mettiamo un singolo &input_vector[] ad ogni ingresso e come risultato le uscite sono le stesse! (al link tutti i log sono disposti).

Ecco la domanda!!!

........

Sì. Il file risultante della rete addestrata si mostra qui, o si manda un'email a .... Interessato ai valori dei pesi. Sarebbe anche bene avere un profilo della rete subito dopo l'inizializzazione, senza allenamento. >> OK?

 
lasso >> :

No. Stiamo parlando di cose diverse. Ti ho chiesto delle uscite!? Per favore, scavate qui. Cioè abbiamo un comitato di 16 reti, le inizializziamo con pesi casuali, mettiamo un singolo &input_vector[] ad ogni ingresso, come risultato le uscite sono uguali!!! (al link tutti i log sono disposti).

Ecco la domanda!!!

........

Sì. Il file risultante della rete addestrata si mostra qui, o si manda un'email a .... Interessato ai valori dei pesi. Sarebbe anche bene avere un profilo della rete subito dopo l'inizializzazione, senza allenamento. Ok?

Parliamo davvero di cose diverse )) Capisco il suo problema. E l'ho controllato. E ha confermato che sì, tale effetto è presente.

Nel mio ultimo post ho scritto "Un'altra stranezza", il che significa che non ha niente a che vedere con il problema della randomizzazione dei pesi iniziali e l'identità del funzionamento delle maglie del comitato con un unico vettore di input.

Sto dicendo che con l'apprendimento ridondante (sebbene l'effetto sia presente anche con l'apprendimento normale), con, secondo MSE, convergenza positiva, la rete non "trova" un minimo assoluto, e nemmeno uno locale, ma banalmente rotola verso il limite del range, il che indica un problema nell'algoritmo di apprendimento...

 

A proposito, ho controllato l'inizializzazione dei pesi iniziali (registrati subito dopo la creazione). Tutto funziona. La randomizzazione è lì.

Ma ecco una strana voce che ho trovato nel profilo:

layer_sizes=31 31 17 2

E questo a:

ann = f2M_create_standard (4, AnnInputs, AnnInputs, AnnInputs / 2 + 1, 1); con AnnInputs=30

Gli strati nascosti sono per qualche motivo specificati uno in più di quelli dichiarati. Ma quello che mi confonde ancora di più è la dimensione dello strato di uscita "2" quando è dichiarato "1" !!!

 
Henry_White >> :

A proposito, ho controllato l'inizializzazione dei pesi iniziali (registrati subito dopo la creazione). Tutto funziona. La randomizzazione è lì.

Ma ecco una strana voce che ho trovato nel profilo:

layer_sizes=31 31 17 2

E questo a:

ann = f2M_create_standard (4, AnnInputs, AnnInputs, AnnInputs / 2 + 1, 1); quando AnnInputs=30

Per qualche ragione c'è uno strato nascosto in più di quello dichiarato. Ma quello che mi confonde ancora di più è la dimensione dello strato di uscita "2" quando è dichiarato "1" !!!

Tutto è corretto lì. Ci sono 4 strati in totale: strato di ingresso, 2 strati nascosti, strato di uscita. Ogni strato ha bias = 1, non partecipa alla dimensione "utente". Questo è preso dalla documentazione del FANN.


Buona fortuna.

 
Sì, ho letto dei pregiudizi... Ma non ho visto nulla sul fatto che appaia nel profilo della griglia. Forse hai ragione e si tratta davvero di un neurone di feedback aggiuntivo. Comunque, questo spiegherebbe logicamente l'aumento incrementale degli strati... Ed ero già contento di aver trovato un indizio sul "floating away" della mesh al confine dell'intervallo )))
 
Henry_White писал(а) >>

A proposito, ho controllato l'inizializzazione dei pesi iniziali (registrati subito dopo la creazione). Tutto funziona. C'è una randomizzazione.

Sì, c'è una randomizzazione dei pesi. Ma ancora ripeto:

Notato. La randomizzazione è da -1 a 1, e nel profilo di rete, i pesi sono da -10.0e--003 a 10.0e-003

Esempio: (12, -7.35577636217311400000e-003) (13, 7.639700053449810000e-002)

È corretto?

Ecco perché ho chiesto di mostrare i vostri profili di rete ....

 
lasso >> :

Sì, la randomizzazione delle scale è lì. Ma lo dirò di nuovo:

Notato. La randomizzazione è da -1 a 1, e nel profilo della rete i pesi sono da -10.0e--003 a 10.0e-003

Esempio: (12, -7.35577636217311400000e-003) (13, 7.639700053449810000e-002)

È corretto?

Ecco perché ti ho chiesto di mostrare i tuoi profili di rete ....

Controllato - i miei valori sono diversi e sparsi quasi uniformemente. Ecco una delle inizializzazioni:

connections (connected_to_neuron, weight)=(0, -9.946899414062500000000e-001) (1, -6.88415527343750000e-001) (2, 6.51367187500000000e-001) (3, -8.2067871093750000e-001) (4, 9.83703613281250000e-001) (5, -6.84936523437500000000e-001) (6, 3.6010742187500000000e-001) (7, 2.90527343750000e-001) (8, 7.546386718750000e-001) (9, -7.60314941406250000e-001) (10, -7.78137207031250000e-001) (11, 7554321289062500000000e-001) (12, -6.61560058593750000e-001) (13, 1.657714843750000e-001) (14, 5.710449218750000e-001) (15, -1.54785156250000e-001) (16, 9.851074218750000e-002) (17, -5.269165039062500000000e-001) (18, 8.58947753906250000e-001) (19, -5.6652832031250000e-001) (20, 7.3144531250000e-001) (21, -8.80310058593750000e-001) (22, 6.823730468750000e-002)

................................................................................................................................................................................................................................

(42, -6.953735351562500000000e-001) (43, -7.0153808593750000e-001) (44, -7.38952636718750000e-001) (45, -3.44238281250000e-002) (46, -1.994018554687500000000e-001) (47, 2.73132324218750000e-001) (48, 4.53186035156250000e-001) (49, -4.709472656250000e-001) (50, -7.741699218750000e-001) (51, -9.54711914062500000000e-001) (52, 8.09509277343750000e-001) (53, 9.92370605468750000e-001) (54, -4.13391113281250000e-001) (55, 6.672973632812500000000e-001) (56, 9.59289550781250000e-001) (57, 1.0925292968750000e-001) (58, -3.02551269531250000e-001) (59, -5.29785156250000e-001) (60, 5.857543945312500000000e-001) (61, 7.999877929968750000e-001) (62, -1.11999511718750000e-001) (63, -8.0749511718750000e-001) (64, -7.08862304687500000000e-001) (65, 8.05236816406250000e-001) (66, 2.9260253906250000e-001) (67, 3.61633300781250000e-001) (68, -2.99011230468750000e-001) (69, 6.248168945312500000000e-001) (70, -7.15759277343750000e-001) (71, -7.5720214843750000e-001) (72, -1.31774902343750000e-001) (73, 5.53894042968750000e-001) (74, -3.85009765625000000000000e-001) (75, -3.3361816406250000e-001) (76, -9.587402343750000e-001) (77, -3.70544433593750000e-001) (78, 8.2690429468750000e-001)


SZZ La verità assembla la biblioteca stessa. Un po' diverso da f2M. Anche se l'ideologia dell'autore di f2M mi è piaciuta e ha portato a una visione simile. Ho appena aggiunto la reinizializzazione del generatore oggi - non so quanto influisca.


 
VladislavVG писал(а) >>

Controllato - i miei valori sono diversi e sparsi quasi uniformemente. Ecco una delle inizializzazioni:

I tuoi pesi sono più che corretti, ma quali sono i valori delle uscite della rete quando il vettore di input è lo stesso?

 
lasso >> :

I tuoi pesi sono più che corretti, ma quali sono le uscite della rete per lo stesso vettore di input?

Non ho ancora testato tutto completamente - mentre il tester di ottimizzazione è in funzione. Non voglio interromperlo.

Posso allegare dll, mqh e EA - ci sono alcune differenze da quelle originali, forse sarà più veloce farlo funzionare.