Une bibliothèque rapide et gratuite pour MT4, pour le plus grand plaisir des neuralnetworkers. - page 15

 
lasso >> :

Je vais ajouter. Ou dans le cas d'un accident de terminal. Mais une solution semble avoir été trouvée.

La question est différente. Vladislav, vous semblez lire le code C++ sans "intermédiaires".

Pourriez-vous commenter le problème des réponses identiques des comités de grille et de l'initialisation correcte des valeurs de pondération ? (détaillé ici et plus de journaux, et ici une question sur les poids)

J'ai regardé les codes. La randomisation est là. Ce qui n'est pas le cas : puisque le C/C++ standard possède un générateur de nombres quasi-aléatoires, il est recommandé de réinitialiser le noyau (seed - srand(int ) - déplacer le point de référence avant chaque appel à 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 писал(а) >>

Oui. Les entrées sont différentes pour chaque grille, bien que cela ne soit pas crucial. Vous pouvez prendre un signal standard, par exemple le même RSI et une grille, et obtenir des valeurs négatives à toutes les entrées de la force brute.

Initialisation des échelles -1, 1.

A propos du profil... Voulez-vous dire le fichier résultant du réseau formé ?

Non. Nous parlons de choses différentes. Je vous ai interrogé sur les sorties ! S'il vous plaît, regardez ici. Par exemple, nous avons un comité de 16 réseaux, nous les initialisons avec des poids aléatoires, nous plaçons un seul &input_vector[] à chaque entrée et le résultat est que les sorties sont les mêmes ! (sur le lien, tous les journaux sont présentés).

Voici la question ! !!

........

Oui. Le fichier résultant du réseau formé montrer ici, ou email .... Intéressé par les valeurs des poids. Il serait également bon de disposer d'un profil du réseau immédiatement après son initialisation, sans formation. >> OK ?

 
lasso >> :

Non. Nous parlons de choses différentes. Je t'ai demandé pour les sorties !? S'il vous plaît, creusez ici. C'est-à-dire que nous avons un comité de 16 réseaux, nous les initialisons avec des poids aléatoires, nous mettons un seul &input_vector[] à chaque entrée, comme résultat les sorties sont les mêmes ! !! (sur le lien, tous les journaux sont présentés).

Voici la question ! !!

........

Oui. Le fichier résultant du réseau formé montrer ici, ou email .... Intéressé par les valeurs des poids. Il serait également bon de disposer d'un profil du réseau immédiatement après son initialisation, sans formation. Ok ?

Nous parlons vraiment de choses différentes ;)) Je comprends votre problème. Et je l'ai vérifié. Et confirmé que oui, cet effet est présent.

Dans mon dernier post, j'ai écrit "Une autre bizarrerie", ce qui signifie que cela n'a rien à voir avec le problème de la randomisation des poids initiaux et l'identité du fonctionnement des mailles du comité avec un seul vecteur d'entrée.

Je dis qu'avec l'apprentissage redondant (bien que l'effet soit également présent avec l'apprentissage normal), avec, selon MSE, une convergence positive, le réseau ne "trouve" pas un minimum absolu, ni même un minimum local, mais roule banalement vers la limite de l'intervalle, ce qui indique un problème dans l'algorithme d'apprentissage...

 

Au fait, j'ai vérifié l'initialisation des poids initiaux (enregistrés immédiatement après la création). Tout fonctionne. La randomisation est là.

Mais voici une entrée étrange que j'ai trouvée dans le profil :

layer_sizes=31 31 17 2

Et ceci à :

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

Les couches cachées sont pour une raison quelconque spécifiées une de plus que celles déclarées. Mais ce qui me perturbe encore plus, c'est la taille de la couche de sortie "2" alors que "1" est déclarée ! !!

 
Henry_White >> :

Au fait, j'ai vérifié l'initialisation des poids initiaux (enregistrés immédiatement après la création). Tout fonctionne. La randomisation est là.

Mais voici une entrée étrange que j'ai trouvée dans le profil :

layer_sizes=31 31 17 2

Et ceci à :

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

Pour une raison quelconque, il y a une couche cachée de plus que celle déclarée. Mais ce qui me perturbe encore plus, c'est la taille de la couche de sortie "2" alors que "1" est déclarée ! !!

Tout est correct ici. Il y a 4 couches au total : couche d'entrée, 2 couches cachées, couche de sortie. Chaque couche a un biais = 1, elle ne participe pas à la dimension "utilisateur". Ceci est extrait de la documentation FANN.


Bonne chance.

 
Oui, j'ai lu sur les préjugés... Mais je n'ai rien vu concernant son apparition dans le profil de la grille. Peut-être que tu as raison et que c'est vraiment un neurone de rétroaction supplémentaire. En tout cas, cela expliquerait logiquement l'augmentation progressive des couches... Et j'étais déjà content d'avoir trouvé un indice sur le "flottement" de la maille à la limite de la plage ;))).
 
Henry_White писал(а) >>

Au fait, j'ai vérifié l'initialisation des poids initiaux (enregistrés immédiatement après la création). Tout fonctionne. Il y a une randomisation.

Oui, il y a une randomisation des poids. Mais je répète quand même :

Noté. La randomisation est de -1 à 1, et dans le profil du réseau, les poids sont de -10.0e--003 à 10.0e-003.

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

Est-ce correct ?

C'est pourquoi j'ai demandé de montrer les profils de votre réseau.....

 
lasso >> :

Oui, la randomisation des échelles est là. Mais je vais le répéter :

Noté. La randomisation est de -1 à 1, et dans le profil du réseau les poids sont de -10.0e--003 à 10.0e-003

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

Est-ce correct ?

C'est pourquoi je vous ai demandé de montrer les profils de votre réseau.....

Vérifié - mes valeurs sont différentes et dispersées presque uniformément. Voici une des initialisations :

connexions (connected_to_neuron, weight)=(0, -9.946899414062500000000e-001) (1, -6.88415527343750000e-001) (2, 6.5136718750000e-001) (3, -8.2067871093750000e-001) (4, 9.83703613281250000e-001) (5, -6.8493652343750000e-001) (6, 3,601074218750000e-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,953735351562500000000e-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.67297363281250000e-001) (56, 9,59289550781250000e-001) (57, 1,0925292968750000e-001) (58, -3,02551269531250000e-001) (59, -5,29785156250000e-001) (60, 5.85754394531250000e-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,6163333300781250000e-001) (68, -2,99011230468750000e-001) (69, 6.24816894531250000e-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,5874023750000e-001) (77, -3,70544433593750000e-001) (78, 8,2690429468750000e-001)


SZZ La vérité rassemble la bibliothèque elle-même. Quelque peu différent de f2M. Bien que l'idéologie de l'auteur de f2M m'ait plu et conduit à un point de vue similaire. J'ai ajouté la réinitialisation du générateur aujourd'hui - je ne sais pas dans quelle mesure cela l'affecte.


 
VladislavVG писал(а) >>

Vérifié - mes valeurs sont différentes et dispersées presque uniformément. Voici l'une des initialisations :

Vos poids sont plus que corrects, mais quelles sont les valeurs des sorties du réseau lorsque le vecteur d'entrée est le même ?

 
lasso >> :

Vos poids sont plus que corrects, mais quelles sont les sorties du réseau pour le même vecteur d'entrée ?

Je n'ai pas encore tout testé - pendant que le testeur d'optimisation fonctionne. Je ne veux pas l'interrompre.

Je peux joindre la dll, le mqh et l'EA - il y a quelques différences par rapport aux originaux, peut-être que ce sera plus rapide pour le faire fonctionner.