Una biblioteca rápida y gratuita para MT4, para deleite de los neuralnetworkers - página 15

 
lasso >> :

Yo añadiré. O en el caso de un choque de terminales. Pero parece que se ha encontrado una solución.

La cuestión es diferente. Vladislav, parece que lees el código C++ sin "intermediarios".

¿Podría comentar el problema de las respuestas idénticas de la comisión de rejilla y la correcta inicialización de los valores de los pesos? (detallado aquí y más registros, y aquí una pregunta sobre los pesos)

He mirado los códigos. La aleatorización está ahí. Lo que no : dado que el estándar C/C++ tiene un generador de números casi aleatorios, se recomienda reiniciar el núcleo (semilla - srand(int ) - mover el punto de referencia antes de cada llamada 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í. Las entradas son diferentes para cada cuadrícula, aunque esto no es crucial. Puede tomar una señal estándar, por ejemplo, el mismo RSI y una rejilla, y seguir obteniendo valores negativos en cualquier entrada de la fuerza bruta.

Inicialización de las escalas -1, 1.

Sobre el perfil... ¿Se refiere al archivo resultante de la red entrenada?

No. Estamos hablando de cosas diferentes. ¿Te he preguntado por las salidas? Por favor, investigue aquí. ¡Es decir, tenemos un comité de 16 redes, las inicializamos con pesos aleatorios, ponemos un único &input_vector[] en cada entrada y como resultado las salidas son las mismas! (en el enlace se exponen todos los registros).

¡¡¡Aquí está la pregunta!!!

........

Sí. El archivo resultante de la red entrenada se muestra aquí, o por correo electrónico .... Interesado en los valores de los pesos. También sería bueno tener un perfil de la red inmediatamente después de la inicialización, sin entrenamiento. >> ¿DE ACUERDO?

 
lasso >> :

No. Estamos hablando de cosas diferentes. ¿Te he preguntado por las salidas? Por favor, escarbe aquí. ¡¡¡Es decir, tenemos un comité de 16 redes, las inicializamos con pesos aleatorios, ponemos un único &input_vector[] en cada entrada, como resultado las salidas son las mismas!!! (en el enlace se exponen todos los registros).

¡¡¡Aquí está la pregunta!!!

........

Sí. El archivo resultante de la red entrenada se muestra aquí, o por correo electrónico .... Interesado en los valores de los pesos. También sería bueno tener un perfil de la red inmediatamente después de la inicialización, sin entrenamiento. ¿De acuerdo?

Realmente hablamos de cosas diferentes )) Entiendo su problema. Y lo comprobó. Y confirmó que sí, que ese efecto está presente.

En mi último post escribí "Otra rareza", lo que significa que no tiene nada que ver con el problema de la aleatorización de los pesos iniciales y la identidad del funcionamiento de las mallas del comité con un único vector de entrada.

Digo que con el aprendizaje redundante (aunque el efecto también está presente con el aprendizaje normal), con, según el MSE, convergencia positiva, la red no "encuentra" un mínimo absoluto, y ni siquiera uno local, sino que rueda banalmente hasta el límite del rango, lo que indica un problema en el algoritmo de aprendizaje...

 

Por cierto, se ha comprobado la inicialización de los pesos iniciales (registrados inmediatamente después de la creación). Todo funciona. La aleatorización está ahí.

Pero aquí hay una entrada extraña que encontré en el perfil:

layer_sizes=31 31 17 2

Y esto en:

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

Las capas ocultas son, por alguna razón, una más de las declaradas. ¡¡¡Pero lo que me confunde aún más es el tamaño de la capa de salida "2" cuando se declara "1" !!!

 
Henry_White >> :

Por cierto, se ha comprobado la inicialización de los pesos iniciales (registrados inmediatamente después de la creación). Todo funciona. La aleatorización está ahí.

Pero aquí hay una entrada extraña que encontré en el perfil:

layer_sizes=31 31 17 2

Y esto en:

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

Por alguna razón hay una capa oculta más de las declaradas. ¡¡¡Pero lo que me confunde aún más es el tamaño de la capa de salida "2" cuando se declara "1" !!!

Todo es correcto allí. Hay 4 capas en total: capa de entrada, 2 capas ocultas, capa de salida. Cada capa tiene un sesgo = 1, no participa en la dimensión "usuario". Esto está tomado de la documentación de FANN.


Buena suerte.

 
Sí, he leído sobre la parcialidad... Pero no he visto nada de que aparezca en el perfil de la red. Tal vez tengas razón y sea realmente una neurona de retroalimentación adicional. De todos modos, eso explicaría lógicamente el aumento de las capas... Y ya me alegré de haber encontrado una pista sobre el "alejamiento" de la malla hasta el límite del rango )))
 
Henry_White писал(а) >>

Por cierto, se ha comprobado la inicialización de los pesos iniciales (registrados inmediatamente después de la creación). Todo funciona. Hay una aleatorización.

Sí, hay una aleatorización de los pesos. Pero aún así repito:

Se ha tomado nota. La aleatorización es de -1 a 1, y en el perfil de la red, los pesos son de -10,0e--003 a 10,0e-003

Ejemplo: (12, -7,35577636217311400000e-003) (13, 7,639700053449810000-002)

¿Es esto correcto?

Por eso te pedí que mostraras tus perfiles de red....

 
lasso >> :

Sí, la aleatoriedad de las escalas está ahí. Pero lo diré de nuevo:

Se ha tomado nota. La aleatoriedad va de -1 a 1, y en el perfil de la red los pesos van de -10,0e--003 a 10,0e-003

Ejemplo: (12, -7,35577636217311400000e-003) (13, 7,639700053449810000-002)

¿Es esto correcto?

Por eso te pedí que mostraras tus perfiles de red....

Comprobado - mis valores son diferentes y están dispersos casi uniformemente. Aquí está una de las inicializaciones :

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, 755432128906250000e-001) (12, -6,61560058593750000e-001) (13, 1,657714843750000e-001) (14, 5,710449218750000e-001) (15, -1,54785156250000e-001) (16, 9,851074218750000e-002) (17, -5.26916503906250000e-001) (18, 8,58947753906250000e-001) (19, -5,6652832031250000e-001) (20, 7,3144531250000e-001) (21, -8,80310058593750000e-001) (22, 6,823730468750000e-002)

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

(42, -6,9537351562500000000e-001) (43, -7,0153808593750000e-001) (44, -7,38952636718750000e-001) (45, -3,44238281250000e-002) (46, -1.99401855468750000e-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,09252968750000e-001) (58, -3,02551269531250000e-001) (59, -5,29785156250000e-001) (60, 5.8575439453125000000e-001) (61, 7,999877929968750000e-001) (62, -1,11999511718750000e-001) (63, -8,0749511718750000e-001) (64, -7.0886230468750000e-001) (65, 8,05236816406250000e-001) (66, 2,9260253906250000e-001) (67, 3,61633300781250000e-001) (68, -2,99011230468750000e-001) (69, 6.2481689453125000000e-001) (70, -7,15759277343750000e-001) (71, -7,5720214843750000e-001) (72, -1,31774902343750000e-001) (73, 5,53894042968750000e-001) (74, -3.8500976562500000000e-001) (75, -3,3361816406250000e-001) (76, -9,587402343750000e-001) (77, -3,70544433593750000e-001) (78, 8,2690429468750000e-001)


SZZ La verdad montar la propia biblioteca. Algo diferente de f2M. Aunque, la ideología del autor de f2M me gustó y me llevó a una visión similar. Acabo de añadir la reinicialización del generador hoy - no sé cuánto afecta.


 
VladislavVG писал(а) >>

Comprobado - mis valores son diferentes y están dispersos casi uniformemente. Aquí está una de las inicializaciones :

Tus pesos son más que correctos, pero ¿cuáles son los valores de las salidas de la red cuando el vector de entrada es el mismo?

 
lasso >> :

Tus pesos son más que correctos, pero ¿cuáles son las salidas de la red para el mismo vector de entrada?

Todavía no he probado todo, mientras se ejecuta el probador de optimización. No quiero interrumpirlo.

Puedo adjuntar dll, mqh y EA - hay algunas diferencias con los originales, tal vez será más rápido para que funcione.

Razón de la queja: