AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Deep Learning

Aller en bas 
Aller à la page : 1, 2, 3  Suivant
AuteurMessage
onilink_
Modérateur
avatar

Messages : 9020
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Deep Learning   Dim 13 Mai 2018 - 17:41

Ça fait quelques temps (en fait très longtemps mais j'ai jamais eu le temps de trop approfondir) que je m'amuse avec des réseaux de neurones artificiels et vu qu'en ce moment c'est pas mal revenu a la mode (merci les gros GPU) je me demandais si y en avait qui avaient des expériences a partager.

J'essaye surtout de comprendre la théorie derrière, plus qu'a jouer sur le côté pratique de la chose.
J'ai plutôt bien avancé au niveau des perceptrons multicouche et j'en ai fait une petite classe C++ from scratch si y en a que ça intéresse: https://github.com/onidev/neural-net
Il manque l’entraînement via minibatch mais ça marche déjà très bien.

J'ai pas encore tout a fait bien compris au niveau mathématiques la descente du gradient utilisée dans l'algorithme de la backpropagation (pour l'apprentissage), je sais qu'on cherche un minimum global en "tâtonnant", mais je comprend pas trop le rapport entre les formules que j'ai trouvé sur le net, et celles utilisée dans la backpropagation en elle même. Bref si y a un expert qui passe par la...

J'aimerais aussi savoir si y en a qui s'y connaissent niveau réseau de neurones convolutifs. Je comprend "bien" comment ils fonctionnent une fois construits, mais encore une fois je ne comprend pas bien comment fonctionne l'apprentissage. Y a pas l'air d'y avoir masse de doc accessible sur le net, on dirait que tout le monde s'en fiche. Est ce qu'il s'agit d'une backpropagation aussi? Ou est ce un algorithme totalement différent? (j'ai cru comprendre que la méthode est assez récente comparé aux plus anciens modèles, et vient d'un français: Yann LeCun).

J'aimerais faire une mini bibliothèque complète pour l'apprentissage et l'utilisation de CNN. Je sais que ça existe déjà (tensorflow etc) mais j'aime comprendre les outils que j'utilise. Et c'est toujours bien d'avoir une version minimaliste pour bien comprendre comment fonctionne quelque chose (et encore mieux de le faire soit même).

Je me suis récemment amusé a utiliser ma bibliothèque dans la reconnaissance de nombres en utilisant la database de MNIST, et après un seul entraînement le réseau avait atteint > 90% de réussite.
Je me suis alors amusé a regarder les premières couches reliées a l'image d'entrée et le résultat est assez marrant:


Bref, si vous avez des trucs a partager a propos des réseaux de neurones ou du deep learning plus généralement, hésitez pas a poster ici Smile


_________________
                 
Revenir en haut Aller en bas
Linky439
Utilisateur confirmé: Rang *****
avatar

Messages : 2629
Localisation : Sur le forum du CBNA...ou pas
Projet Actuel : La Galaxie Scellée

MessageSujet: Re: Deep Learning   Dim 13 Mai 2018 - 19:29

C'est vrai que c'est un sujet foutrement intéressant ! Je m'y connais pas plus que ça, j'ai juste lu 2-3 trucs de vulgarisation dessus, mais ça me donne aussi envie de m'y plonger un peu !

Par contre, j'avoue que je comprends pas trop ton image ? Une petite explication si possible ? ^^

_________________
Cliquez pour accéder aux topics dédiés !
   
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9020
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Deep Learning   Dim 13 Mai 2018 - 20:07

La première couche est reliée directement a l'entrée (l'image a reconnaître), ce qui fait que pour chaque neurone de cette couche, on peut visualiser les poids de chaque connexion avec chaque pixel sous forme d'une image. Et c'est cela qui ressort ici.
Après le fonctionnement de chaque neurone est toujours un peu un mystère, surtout dans un cas ou y a moins de neurones (ici 8 ) que de sorties (10 nombres). Ça reconnaît probablement certains patterns avant d'envoyer ça aux autres couches.

Pour les couleurs, noir représente le poids 0, a gauche (bleus et blanc) c'est des poids négatifs, et a droite (rouge, jaune) des poids positifs.
Logiquement, les "symboles" jaunes sont ceux qui vont être reconnus, et leur assemblage sera ensuite utilisé dans les couches suivantes pour déterminer le nombre.

_________________
                 
Revenir en haut Aller en bas
[TheDarkTiger]
Modérateur
avatar

Messages : 7416
Localisation : Essonne

MessageSujet: Re: Deep Learning   Lun 14 Mai 2018 - 23:04

ça fait bien longtemps que j'ai eu les cours là dessus (j'étais encore en Angleterre =P)
Mais de ce dont je me souviens, et ça à peut être évolué, il n'y avait pas de méthode cartésienne pour choisir la taille et la profondeur du réseau, et la seule façon pas suicidaire de remplir le réseau de neurone était un recuit simulé ou juste un bon gros blam dans ta tronche.
On avait par exemple crée un réseau pour reconnaitre un chiffre. L'image faisait je sais plus, 5*8 je crois, y avait 10 neurones de sortie, et basta le chat, on devait se dé***** à notre sauce pour choisir la taille des couches intermédiaires et leur nombres.
Ensuite il fallait fournir à la main (!) des fichiers d'apprentissage (et comme c'étaient des truelles à l'époque, y avait que 10 images de base (tiens, devinez pour voir?)) et on pouvait, si on voulait en ajouter d'autres.
Ensuite, fallait tester.
Alors le prof ouvrait pain, modifiait un ou deux pixel, et balançait dans le réseau neuronal et, ho miracle ! ça marchait.
Je me souviens que j'avais fait un script pour générer 100 images par image d'entrée avec 10 dégradations successives de bruit impulsionnel (sel et poivre) et 10 de dégradation genre pixel swap ou flou, je sais plus trop.
Bref, avec ça on commençait à comprendre un peu l’intérêt de bien choisir la taille de son système et surtout, de ni le faire sous apprendre, ni sur apprendre.

Voilà, ça apportera pas grand chose à la conversation, mais si je peut aider =P

Ha, un conseil, bien choisir ses variables d'entrée est 1000 fois plus efficace que passer 10 plombes à "optimiser" un réseau qui bosse avec des données foireuses.
Un exemple parmi tant d'autres, il vaut peut être mieux 4 imagettes : une miniature, un filtre horizontal, un filtre vertical et un passe haut que travailler sur l'image de base en fonction de la problématique.

_________________
Bonne chance pour vos projets actuels ! Prêt à aider ceux qui en ont besoin ^^
l'antique http://www.membres.lycos.fr/thedarkminousite/
Bienvenue au 2545eme utilisateur : StePheN !
Revenir en haut Aller en bas
http://www.tdms.fr
onilink_
Modérateur
avatar

Messages : 9020
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Deep Learning   Mar 15 Mai 2018 - 8:18

Ahah, 10 images pour entraîner un réseau simple, voir même 100, c'est ridicule x)
mnist en ont 60k d'exemple et 10k de test (et ça existe depuis 1998 de souvenir). Ils étaient pas très doués vos profs.

Pour le choix du nombre de neurones, c'est assez logique en fait. Chaque neurone (dans le cas ou on traite une image) va agir comme un filtre, et définir si oui ou non un pixel a de l'importance (positive ou négative). Du coup, dans le cas ou tu vas avoir a classifier 10 nombres, il te faudra minimum 10 neurones pour que les résultats ne soient pas mauvais. Sinon ça va créer une espèce de "goulot" entre l'entrée et la sortie, et enlever cette couche sera plus bénéfique que l'ajouter.

Après y a pas de secret, plus y a de neurones, plus ça va marcher, mais plus long va être l'apprentissage.
La ou y a devient plus compliqué c'est au niveau de la topologie, parfois il vaut mieux avoir 2 couches, mais je sais pas exactement pourquoi au niveau théorique.

Pour les entrées, bien choisir ses données est en effet très important. En choisir trop mène vite a de la sur interprétation, et pas assez a de la sous interprétation.
Dans les deux cas un moyen très efficace de le vérifier et de faire de la validation croisée. Utiliser un dataset pour l'apprentissage, et un autre pour les vérifications (bien sur, faut faire une séparation entre les deux de manière aléatoire, et le test set peut être bien plus petit que le dataset).
Mais heureusement il existe des lois pour savoir la dimension du vecteur d'entrée a choisir: théorème de vapnik des explications ad hoc si je dit pas de bêtises.
Y a des vidéos sur youtube qui en parlent.

D'ailleurs, comme les perceptron multicouche sont des classificateurs linéaires, on peut donner des entrées supplémentaires "doublon" avec des transformations non linéaires (entre les entrées déjà présentes) pour améliorer drastiquement les résultats dans certains cas (tout en augmentant le nombre de dimensions, et donc les durées d’entraînement).

Pour le coup de filtrer avant de passer les données, ça c'est vieux et ça ne se fait plus. Le principe des réseaux de neurones convolutif étant justement qu'ils sont capable de "créer" les filtres dont ils ont besoin eux même et sur mesure. Et c'est ça la révolution avec les CNN. Il ne reste que deux choses a faire pour les entraîneurs:
- créer ou se fournir la database
- choisir la topologie du réseau (sachant qu'il existe beaucoup de modèles spécialisés dans des taches particulières)

C'est presque un jeu d'enfant gnii

Ah et sinon j'ai fait quelques tests de topologie sur une itération de training: https://i.imgur.com/ssI6VW8.png
Et j'ai réussi a obtenir 97.5% de réussite avec une couche cachée de 128 neurones, et 5 itérations de training.
Va falloir passer aux CNN maintenant.

_________________
                 
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1397
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: Deep Learning   Mar 15 Mai 2018 - 19:11

Cool! Je me suis dit qu'un jours, j'allais faire un topic comme celui-ci pour en discuter. Content que tu l'ai fait. :fleche_d

Quelque liens que je trouve très importants:

Des présentation d'article de marchine learning incroyable où tu peux interagir avec tout les élements:https://distill.pub/
Des articles sympa: http://colah.github.io/
Une série de vidéo avec des points de vue que je n'ai pas vu présenté ailleurs:
https://www.youtube.com/playlist?list=PLtzmb84AoqRTl0m1b82gVLcGU38miqdrC
(D'ailleur j'ai l'impression que tu l'a déjà regardé ^^)

La backpropagation:
https://www.youtube.com/watch?v=tIeHLnjs5U8&list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi&index=3

La backpropagation dans un CNN.
https://becominghuman.ai/back-propagation-in-convolutional-neural-networks-intuition-and-code-714ef1c38199

Si tu as une question précise, j'essayerais d'y répondre si je peux.

Si tu veux faire un projet commun pour apprendre, je suis chaud. ;fleche_d

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9020
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Deep Learning   Mar 15 Mai 2018 - 20:04

Vraiment cool ces liens, surtout le premier, ça aide vraiment mieux a appréhender la reconnaissance d'image. C'est génial.

Ouais science4all j'ai regardé ses vidéos, c'est pas mal mais faut vraiment faire gaffe aux premières vidéos de sa série IA qui sont selon moi un peu parsemées de bullshit et d'opinions personnelles foireuses.
Heureusement vers l'épisode 5 ça commence a être plus rigoureux et avec moins d'avis subjectifs.

C'est marrant mais le premier lien que tu as mis ( https://distill.pub/ ) me fait vraiment penser a une "joute" qui a eu entre Ali Rahimi (un mec qui bosse chez google) et Yann Lecun (le père des CNN).
Rahimi a fait tout un talk pour dire en gros, que le deep learning c'est de l'alchimie moderne parce qu'on comprend pas comment ça marche.
Sauf que du coup Lecun est venu et a posé un gros NOPE.

Et le truc amusant c'est qu'effectivement beaucoup de personnes utilisent ça de manière alchimique sans essayer de comprendre comment ça fonctionne, sans étudier toute la partie théorique sur laquelle c'est basé (c'est pas sorti de nulle part, y a quand même des bases très solides), alors que t'as tout a gagner a connaître la théorie derrière pour optimiser les résultats.
Et surtout, il n'y a rien de magique derrière tout ça, et c'est ce genre de site interactifs qui le montrent bien, que ce soit au niveau du fonctionnement, ou après l’entraînement, un réseau de neurone n'est pas une boite noire totalement opaque. C'est un système très complexe, mais avec la bonne méthodologie on peut le découper, l'analyser, et comprendre les briques élémentaires.
Bien sur pour ça il faut prendre le temps de chercher... et de comprendre.

Edit:
Sinon niveau projet, déjà je vais essayer de me faire une implé simplifié de CNN et l'utiliser pour le dataset mnist des digits, m'amuser un peu avec, puis je vais commencer a regarder les gros frameworks et la ce sera déjà un peu plus sérieux.
J'ai beaucoup d'idées de projets:
- agrandissement d'image
- séparation de deux images fusionnées (une bête moyenne des deux)
- deviner la prochaine frame dans une vidéo
- faire une interpolation entre deux frames dans une vidéo pour augmenter le framerate
- recoloriser des images en niveau de gris
- combler un trou d'une couleur spécifique dans une image
Sachant qu'après recherche, la plupart ont déjà un paper ou quelqu'un qui a déjà essayé, ce qui permet de ne pas partir de zéro si y a un blocage.

Pour l'instant je vais me concentrer sur la reconnaissance de symboles et d'objets.
Ça me paraît le plus simple.

Y a des trucs amusants pour faire jouer des IA a des jeux de manière totalement autonomes sinon.

Personnellement, a terme, j'aimerais beaucoup faire des outils liés de près ou de loin au pixel art.
Mais a vrai dire je ne sais pas si le deep learning sera vraiment d'une grande aide.
Surtout étant donné la taille très légère des ressources disponibles sur internet a ce niveau.

_________________
                 
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1397
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: Deep Learning   Mar 5 Juin 2018 - 20:38

Bon et bien Onilink, tu m'as convaincu de m'y mettre sérieusement.

J'ai commencé à faire mon propre TensorFlow, mais en C++.
Voila ce que donne un test:

Code:
TEST(Softmax, Softmax) {
  // Generate examples.
  std::vector<Example> examples;
  for (int i = 0; i < 10000; ++i) {
    Tensor input = Tensor::Random({2});
    examples.push_back({input, xor_function(input)});
  }

  // Build a neural network.
  Input input({2});
  auto a = Linear(input, 4);
  auto b = Sigmoid(a);
  auto c = Linear(b, 2);
  auto d = Softmax(c);
  auto& output = d;

  Optimizer optimizer(output, 100, examples);

  for (int i = 0; i<1000; ++i) {
    optimizer.Train(1.f, 10000);

    // Check for new predictions.
    float error = optimizer.Error();
    if (error < 0.05)
      break;
  }
  EXPECT_LE(optimizer.Error(), 0.05);
}

Pour le moment, j'ai 5 types de nœuds différents.

  • Input
  • Linear
  • Sigmoid
  • Relu
  • Softmax


On va maintenant ajouter Convolution2D et MaxPooling. clinoeuil

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9020
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Deep Learning   Jeu 7 Juin 2018 - 8:52

Oooohhh ça m’intéresse beaucoup tout ça Very Happy J'ai pas eu encore temps pour m'y mettre de mon côté, mais j'avais compris comment faire le réseau de neurones au niveau de l'évaluation (plutôt facile).
Je vois que tu as fais le training par contre, cette partie j'ai jamais réussi a avancer.

J'ai hâte de voir tout ça.

Par contre tensorflow est en c++ non? C'est juste qu'ils proposent des API dans un paquet de langages, je crois.
J'avais regardé un peu, le problème c'est que leur truc est tellement gros que c'est dur de comprendre ou se trouvent les parties intéressantes.
Y a beaucoup de morceaux qui servent juste a opti certaines opérations en utilisant a fond l'archi cpu aussi...

_________________
                 
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1397
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: Deep Learning   Jeu 7 Juin 2018 - 20:05

J'ai plutôt l'impression que tu as plutôt très bien compris comment entraîner le réseau. La preuve tu as réussi a l'entraîner sur le MNIST.

Je partage le dépôt git ici: https://gitlab.com/ArthurSonzogni/WebNeural
Si tu as des questions sur des parties du code, je serais ravi de les expliquer.

Dis moi ce que tu pense de comment j'ai organiser mon code, fais mes struct/classes.
Si tu veux on peut faire progresser le code ensemble et expérimenter à partir d'une même base.

Dans le futur, j'aimerais compiler le code en WebAssembly et pouvoir faire tester les expérimentation qu'on aurait fait sur des page web.


_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1397
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: Deep Learning   Jeu 7 Juin 2018 - 22:29

Je viens de rajouter un test sur la base de donnée du MNIST:
https://gitlab.com/ArthurSonzogni/WebNeural/commit/a2cef4ac6903b153674abe58099a03a6fcb237fd

Il y a 60000 images dans le training set.
Avec ce modèle:
Code:

  Input input({28, 28});
  auto a = Linear(input, 32);
  auto b = Sigmoid(a);
  auto c = Linear(b, 16);
  auto d = Sigmoid(c);
  auto e = Linear(d, 10);
  auto f = Softmax(e);
  auto& output = f;
En 100 secondes d'apprentissage, j'ai 2.9% d'erreur pour le training set et 5.2% pour le testing test.

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9020
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Deep Learning   Ven 8 Juin 2018 - 8:25

Pour l'apprentissage j'ai réussi a m'en sortir pour le multilayer perceptron, mais en fait j'ai pas compris comment adapter ça a un CNN, vu qu'y a plein de types de couches différentes.
Je vais regarder ton code.

Par contre, 5% d'erreur ça me semble beaucoup pour du CNN, l'archi de ton réseau doit pas être la plus opti.
Je vais regarder tout ça, ça a l'air bien cool.
En plus demain c'est le w-e, je vais bien pouvoir creuser Very Happy

_________________
                 
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1397
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: Deep Learning   Ven 8 Juin 2018 - 13:27

Il y a 5% d'erreurs car ce n'est pas un CNN. Pour l'instant, c'est juste un perception à deux couches. De plus, j'ai arrêté l'apprentissage lorsque le pourcentage d'erreur sur le training set était plus petit que 3%. Je pouvais aller un peu plus loin.

Ce weekend, si tous ce passe bien. Je pourrais rajouter des convolutions.

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9020
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Deep Learning   Sam 9 Juin 2018 - 7:14

Ah ok. Normalement avec un MLP on peut atteindre les 98% de réussite (mais faut de gros hidden layers).

_________________
                 
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1397
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: Deep Learning   Sam 9 Juin 2018 - 20:11

Je viens de rajouter:

  1. Convolution2D
  2. Maxpooling
  3. Bias
  4. Dropout


Pour le moment, les résultats sont pas au rendez-vous, j'ai du faire une erreur quelque part ...

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9020
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Deep Learning   Sam 9 Juin 2018 - 20:42

T'as pas mis a jour le repo? J'ai pas forward/backward dans la convo2d.

_________________
                 
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1397
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: Deep Learning   Sam 9 Juin 2018 - 22:31

Non, je ne l'avais pas mis. Je viens de le faire si tu veux y jeter un coup d'oeil.

Pour lancer le test MNIST.CNN:
make && ./src/tests --gtest_filter=MNIST.CNN
Je reste bloqué à 6.5% d'erreur dans le training set et le test test. Pourtant, je pense avoir utiliser le même réseau que dans le tuto de tensorflow.

N'hésite pas à diminuer la taille du training set pour expérimenter ou réduire la taille du réseau.

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1397
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: Deep Learning   Sam 9 Juin 2018 - 22:38

Okay, je viens de comprendre. J'ai fais une erreur stupide:

for(size_t dx = -size_half_params[0]; dx <= +size_half_params[0]; ++dx) {...}

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9020
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Deep Learning   Dim 10 Juin 2018 - 7:46

Effectivement Very Happy
Le petit size_t (unsigned) avec un nombre négatif, ça m'est déjà arrivé.
Ça train bien du coup avec ça en moins?
Vais tester.

Edit:
Bon finalement j'ai du installer un cmake récent car celui fournis avec mon mint a jour est en 3.5 max.
Si y en a qui ont besoin c'est assez simple de faire une update custom: https://www.claudiokuenzler.com/blog/755/install-upgrade-cmake-3.10.1-ubuntu-14.04-trusty-alternatives

Edit2:
Attention petite erreur, quand tu inclus vector il ne définis pas size_t dans le namespace global (fin ça dépend de ton compilo mais du coup si tu veux augmenter la portabilité retiens que non). Il faut toujours mettre std::size_t (en fait le standard dit qu'il faut faire pareil avec tous les types comme std::uint32_t etc...).

_________________
                 
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1397
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: Deep Learning   Dim 10 Juin 2018 - 10:55

Du coup, ça train pas trop pour le moment ;fleche_d. J'ai encore trouver plusieurs bugs.

Pour CMake, j'ai du utiliser la version 3.9 pour avoir la commande: gtest_discover_tests(tests) qui est sympa.
J'ai mis un commentaire dans le CMakeLists.txt pour updater cmake facilement : "pip install cmake"

J'ai également mis un commentaire pour installer gtest.

Pour te répondre au niveau de size_t. J'ai vraiment pas envie d'utiliser std::size_t. Tu utilise quel compiler?

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9020
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Deep Learning   Dim 10 Juin 2018 - 12:13

J'utilise gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9)
Mais même d'un gcc à un autre, tu peux avoir ce soucis.

Le plus simple si tu ne veut pas avoir a écrire std::size_t, c'est juste de faire un using std::size_t; après tes includes.
Sinon ouais, j'ai corrigé le soucis de mon côté aussi et ça me parait beaucoup trop lent le train.
Je vais déjà essayer de comprendre comment tout fonctionne, je suis pas encore à l'aise avec les CNN.

_________________
                 
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1397
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: Deep Learning   Dim 10 Juin 2018 - 13:31

Je trouver d'autres bugs.
Maintenant, j'ai l'impression que le layer Convolution2D apprend des gradients:



_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9020
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Deep Learning   Dim 10 Juin 2018 - 15:15

Ah effectivement ça commence a ressembler a quelque chose!
Au niveau du taux d'apprentissage ça se ressent du coup?

_________________
                 


Dernière édition par onilink_ le Dim 10 Juin 2018 - 15:21, édité 2 fois
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1397
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: Deep Learning   Dim 10 Juin 2018 - 15:16

J'ai l'impression que à partir de 2 Convolution, mon réseau n'apprend rien.

Avec (Convolution2D, MaxPooling, Relu) * 1, (Linear, Softmax), je descend en dessous de 50% très vite, mais je reste assez longtemps à 10% d'erreurs.
Avec (Convolution2D, MaxPooling, Relu) * 2, (Linear, dropout) , (Linear, Softmax), je reste à 90% d'erreurs.

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9020
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Deep Learning   Dim 10 Juin 2018 - 15:25

Effectivement, je viens de tester.
A ton avis le soucis viens de la convolution? Ou elle est sensé bien marcher?

_________________
                 
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1397
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: Deep Learning   Dim 10 Juin 2018 - 15:42

Je ne sais pas. Peut-être qu'il faut attendre plus longtemps que 10 minutes pour voir quelque chose.

Il y a sans doute une erreur quelque part. Je vais essayer de rajouter des tests.

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1397
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: Deep Learning   Dim 10 Juin 2018 - 16:15

Je viens de rajouter un test pour Convolution2D.
Ca fonctionne bien. Par contre, j'ai remarqué qu'il faut que lambda soit très petit. En faite, chaque voxels du filtre de convolution va avoir un effet sur quasiment tous les voxels en sortie. Du coup, la dérivé de la sortie par rapport à chaque voxel du filtre est très très grande (i.e. proportionnel à la taille de la sortie))

Peut-être qu'il faut ne pas trop rapidement modifier le filtre par rapport aux autres paramètres.

_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1397
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: Deep Learning   Dim 10 Juin 2018 - 16:44

J'arrive toujours pas à stacker 2 convolution.
Mais j'ai maintenant d'autre images plus convaincantes:
Ceci est les 16 premiers filtres du CNN (rouge = négatif, bleu = positif)


_________________

D'autres jeux :
In The Cube
In the cube 2
Revenir en haut Aller en bas
arthuro
Utilisateur confirmé: Rang ****
avatar

Messages : 1397
Localisation : Paris
Projet Actuel : Diagon https://arthursonzogni.com/Diagon

MessageSujet: Re: Deep Learning   Dim 10 Juin 2018 - 18:42

J'ai finalement compris ce qui clochait.

Il est TRÈS important de bien initialiser les paramètres du réseau.
Par example, pour une transformation linéaire o = sum_i^n(p_i * a_i), il faut choisir à peut près p_i = N(0, 1/sqrt(n)).

Après un petit entrainement:
Error training set: 0.96%
Error test set : 1.36

_________________

D'autres jeux :
In The Cube
In the cube 2


Dernière édition par arthuro le Mar 12 Juin 2018 - 18:41, édité 1 fois
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 9020
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: Deep Learning   Lun 11 Juin 2018 - 7:18

Bon a savoir. Vais tester la nouvelle version.

_________________
                 
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Deep Learning   

Revenir en haut Aller en bas
 
Deep Learning
Revenir en haut 
Page 1 sur 3Aller à la page : 1, 2, 3  Suivant
 Sujets similaires
-
» BALLISTIC - DEEP FOREST ATMOSPHERE
» Deep cleansing oil DHC = PRODUIT MIRACLE
» Soin profond (deep conditioner)
» Kamina divers (Les Dumping,...)
» Heritage Rouge

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Informations :: Projets communs-
Sauter vers: