"New Neural" est un projet de moteur de réseau neuronal Open Source pour la plateforme MetaTrader 5. - page 73

 
yu-sha:

Le préprocesseur sert précisément à cela

Que vous ayez 2 neurones ou 100, le fichier se présente de la même manière

Eh bien, personne ne vous empêche de le faire graphiquement - il suffit d'écrire une interface graphique et de l'utiliser.

Eh bien, ne coupons pas l'épaule, exposons-la en lignes claires. Il n'est pas certain qu'il en soit de même pour les autres, mais pour moi, la façon de charger que j'ai exposée ci-dessus est évidente en termes d'algorithme de chargement :

lire une chaîne de caractères, initialiser 3 objets de type couche,

nous lisons la première ligne, puis appelons l'objet de la première couche, construisons la couche de type input, initialisons le tableau de 2 neurones.

lire la deuxième ligne, puis appeler le deuxième objet couche, construire la couche de type mlp, initialiser le tableau de 2 neurones.

lire la troisième ligne, puis appeler le deuxième objet de couche, construire le type de couche mlp, initialiser le tableau de neurones de 1.

Comme le nombre de couches est de 3, nous terminons la construction de la troisième ligne et attribuons les connexions.

Pour ce faire, nous parcourons le tableau et appelons les neurones requis, en leur indiquant les liens si le tableau contient 1.

Et comment l'algorithme fonctionnerait-il en xml ?

ZS et le principal avantage est que puisque la table de connexion est binaire, elle est parfaitement liable. La table pour 8 neurones tient dans un seul ulong. Il est vrai que plus on avance dans les bois, plus les partisans sont épais en général, la taille avec un grand nombre de neurones est calculée comme suit

X=N*N/8

où N est le nombre de neurones,

X est le nombre d'octets.

 

Inconvénients

  • La syntaxe XML est redondante.[8]
  • La taille d'un document XML est nettement supérieure à celle d'une représentation binaire des mêmes données. Dans les estimations approximatives, la valeur de ce facteur est prise comme un ordre de grandeur (par un facteur 10).
  • La taille d'un document XML est nettement supérieure à celle d'un document dans d'autres formats de transfert de données basés sur le texte (par exempleJSON[4],YAML,Protocol Buffers) et surtout dans des formats de données optimisés pour un cas d'utilisation particulier.
  • La redondance du XML peut affecter l'efficacité d'une application. Le coût du stockage, du traitement et du transfert des données augmente.
  • XML contient des métadonnées (sur les noms de champs, les noms de classes, l'imbrication des structures), et en même temps, XML se positionne comme un langage de communication de systèmes ouverts. Lors du transfert d'un grand nombre d'objets du même type (de la même structure) entre systèmes, il est inutile de transférer plusieurs fois les métadonnées, bien qu'elles soient contenues dans chaque instance de la description XML.
  • Pour un grand nombre de tâches, vous n'avez pas besoin de toute la puissance de la syntaxe XML et pouvez utiliser des solutions beaucoup plus simples et efficaces.

Mes excuses pour le plagiat.
 

Je propose XML comme norme pour le stockage des configurations, des réseaux, des paramètres, ...

Et il n'est nécessaire que dans les phases d'initialisation/stockage.

Dans le processus de travail, et encore plus dans le processus d'apprentissage, il n'est pas question de XML.

son.humain :
Mes excuses pour le plagiat.

Oui, mais pour certaines raisons, des monstres comme Oracle, Microsoft, ... serrer les dents pour faire disparaître leurs normes "binaires" (généralement commerciales) et se tourner vers les normes ouvertes

La soustraction de 10 MBytes de XML ne pose aucun problème aux ordinateurs modernes.

Un document MS Word .docx de 100 MBytes n'est pas intimidant ?

Si le problème consiste à télécharger un réseau à partir d'un fichier XML, l'entraînement sur un tel matériel est tout simplement irréaliste - les tâches sont d'une complexité incomparable.

 
yu-sha:

Je propose XML comme norme pour le stockage des configurations, des réseaux, des paramètres, ...

Et il n'est nécessaire que dans les phases d'initialisation/stockage.

Dans le processus de travail et encore plus dans la phase d'apprentissage, il ne s'agit pas de XML

Considérez ceci : votre fichier en xml fait 916 octets et en représentation binaire, 64 octets même si vous ne cliquez pas sur l'en-tête.

7 variables d'en-tête + 1 par table = 8 ulong * 8 octets = 64

 
Urain:

Regardez, votre fichier xml fait 916 octets, alors que la représentation binaire fait 64 octets, même si vous ne cliquez pas sur l'en-tête.

7 variables d'en-tête + 1 par table = 8 ulong * 8 octets = 64


Pour ouvrir cette page du forum, je pompe à travers l'Internet au moins une centaine de kilobytes.

Nous sommes en 2012 et il y a longtemps que je n'utilise plus l'unité de mesure de l'octet.)

P.S.

J'ai juste suggéré ma façon de faire - c'est au public de décider.

 
Yu-sha:

Je propose XML comme norme pour le stockage des configurations, des réseaux, des paramètres, ...

Et il n'est nécessaire que dans les phases d'initialisation/stockage.

Dans le processus de travail, et encore plus dans le processus de formation, il ne s'agit pas de XML.

Pour optimiser la structure du réseau, il est nécessaire de modifier (à la volée) le nombre de neurones et de connexions.

Est-il possible de le faire ?

Si cela ne vous dérange pas, veuillez commenter vos codes, cela peut prendre trop de temps pour comprendre le code de quelqu'un d'autre sans aucun commentaire. Merci.

 
her.human:

Pour optimiser la structure du réseau, il est nécessaire de modifier (à la volée) le nombre de neurones et de connexions.

Est-il possible de le faire ?

Si ce n'est pas difficile, veuillez commenter vos codes, vous savez, cela prend trop de temps de comprendre les codes des autres sans commentaires. Merci.

C'est une question de formation. Potentiellement, c'est possible, mais je ne l'ai pas utilisé en pratique.

Habituellement, au cours du processus d'apprentissage, la structure du réseau ne change pas - seuls les paramètres adaptatifs sont modifiés.

Votre définition du problème est déjà un méta-niveau : il s'agit d'entraîner un architecte à modifier la structure du réseau, de sorte que le réseau résultant soit plus performant que les autres en matière d'apprentissage.

Codes postés "tels quels" - faits pour moi et, comme d'habitude, dans la précipitation, donc excusez-moi.

Dans le bon sens du terme, tout ce qui se trouve là-bas devrait être reconstruit par bones une fois que le projet aura été élaboré.

 
yu-sha:

Je télécharge au moins une centaine de kilobytes pour ouvrir cette page du forum.

Nous sommes en 2012 et il y a longtemps que je n'utilise plus d'unité de mesure comme l'octet.)

P.S.

Je n'ai fait que proposer ma version - c'est au public de décider.

Faisons une expérience, créez un chargeur xml pour 1000 neurones avec 100 liens par neurone, et postez la taille du fichier, la structure que vous voulez.

Je peux calculer sur mes genoux combien d'espace ma variante 1000*1000/8=~125 KB, et la vôtre ne le peut pas, donc je ne peux pas comparer...

Si votre version a des dimensions acceptables, pourquoi pas.

 
Urain:

Pas le point, la mémoire, et sur le GPU sera difficile de mettre en œuvre les torsions de la logique de l'objet, j'ai une assez bonne idée de la façon de mettre en œuvre le NS, comme une interaction complexe d'objets au sein de laquelle il ya des fonctions de calculs GPU (il s'agit de la micro-niveau), mais je ne peux pas imaginer comment cet objet complexe code ceux NS ensemble de glisser le GPU comme plusieurs FF avec différents ensembles de poids (macro-niveau) ? ???

La question est rhétorique, mais si quelqu'un la présente, cela ne me dérangerait pas d'en entendre parler.

C'est pourquoi le choix s'est porté sur CUDA plutôt que sur OpenCL, plus courant.

Le code CUDA est orienté objet et vous pouvez passer bit à bit un objet généré par le CPU.

Il y a quelques subtilités mais elles peuvent toutes être résolues

 
yu-sha:

C'est pourquoi CUDA a été préféré à OpenCL, plus courant.

Le code dans CUDA est orienté objet et vous pouvez passer bit à bit l'objet formé sur le CPU

Il y a des subtilités, mais elles peuvent toutes être résolues

Je ne suis pas un expert en la matière, je vous crois, ce serait bien.
Raison: