Outils pour utilisateurs

Outils du site


simple_ai_example

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
simple_ai_example [2020/09/06 12:32] – [Avec cupy] sergesimple_ai_example [2021/12/14 09:47] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. 51.15.19.181
Ligne 1: Ligne 1:
 ====== Exemple simple d'IA ====== ====== Exemple simple d'IA ======
-<WRAP center round box 50% centeralign> + 
-**{{tagpage>ia|Intelligence Artificielle}}**+<WRAP center round box 60% centeralign> 
 +**{{tagpage>ia|Intelligence Artificielle}}**     **[[http://translate.google.com/translate?hl=&sl=auto&tl=en&u=https%3A%2F%2Fressources.labomedia.org%2Fsimple_ai_example|English Version]]** 
 +</WRAP> 
 +<WRAP center round box 60% centeralign> 
 +**[[les_pages_intelligence_artificielle_en_details|Les Pages Intelligence Artificielle en détails]]**
 </WRAP> </WRAP>
  
Ligne 28: Ligne 32:
 ==== Résultat ==== ==== Résultat ====
 <code text> <code text>
-Get data done((16000, 16), (16000,), (4000, 16), (4000,)) +........ 
-Train Value = [  8     8 13    6 10  8     8] +Initialisation 7: 
-Train Label = 19 +Création de l'objet ... 
-Test Value = [ 10      6    6    9  8   6] +    0: Learningrate: 0.021 Résultat 68.67 % 
-Test Label = 20 +    1: Learningrate: 0.0215 Résultat 73.97 % 
-Temps de calcul par cycle: 3.26 +    2: Learningrate: 0.022 Résultat 72.2 % 
-Meilleur résultat: learningrate=0.02495 efficacité=73.25 s+    3: Learningrate: 0.0225 Résultat 79.12 % 
 +    4: Learningrate: 0.023 Résultat 76.4 % 
 +    5: Learningrate: 0.0235 Résultat 76.58 % 
 +    6: Learningrate: 0.024 Résultat 70.3 % 
 +    7: Learningrate: 0.0245 Résultat 75.05 % 
 +    8: Learningrate: 0.025 Résultat 76.35 % 
 +    9: Learningrate: 0.0255 Résultat 77.72 % 
 + 
 +Initialisation 8: 
 +Création de l'objet ... 
 +    0: Learningrate: 0.021 Résultat 64.83 % 
 +    1: Learningrate: 0.0215 Résultat 71.47 % 
 +    2: Learningrate: 0.022 Résultat 76.2 % 
 +    3: Learningrate: 0.0225 Résultat 71.03 % 
 +    4: Learningrate: 0.023 Résultat 77.58 % 
 +    5: Learningrate: 0.0235 Résultat 75.75 % 
 +    6: Learningrate: 0.024 Résultat 78.95 % 
 +    7: Learningrate: 0.0245 Résultat 71.78 % 
 +    8: Learningrate: 0.025 Résultat 74.
 +    9: Learningrate: 0.0255 Résultat 71.1 % 
 + 
 +Initialisation 9: 
 +Création de l'objet ... 
 +    0: Learningrate: 0.021 Résultat 66.03 % 
 +    1: Learningrate: 0.0215 Résultat 71.
 +    2: Learningrate: 0.022 Résultat 69.45 % 
 +    3: Learningrate: 0.0225 Résultat 77.38 % 
 +    4: Learningrate: 0.023 Résultat 75.
 +    5: Learningrate: 0.0235 Résultat 77.5 % 
 +    6: Learningrate: 0.024 Résultat 76.55 % 
 +    7: Learningrate: 0.0245 Résultat 76.33 % 
 +    8: Learningrate: 0.025 Résultat 72.4 % 
 +    9: Learningrate: 0.0255 Résultat 77.72 % 
 + 
 +Temps de calcul par cycle: 3.21 
 +Meilleur résultat: learningrate = 0.0255 efficacité = 81.025
 </code> </code>
 ====Commentaires==== ====Commentaires====
   * Les datas sont anciennes (1991): la méthode pour caractériser les lettres n'est pas pertinente. De nos jours, on utilise directement des images et des [[https://fr.wikipedia.org/wiki/R%C3%A9seau_neuronal_convolutif|Réseau neuronal convolutif]].   * Les datas sont anciennes (1991): la méthode pour caractériser les lettres n'est pas pertinente. De nos jours, on utilise directement des images et des [[https://fr.wikipedia.org/wiki/R%C3%A9seau_neuronal_convolutif|Réseau neuronal convolutif]].
   * Il n'y a pas assez de data pour l'apprentissage: il faut au moins 2000 items par objet: ici il n'y a que 640 items pour l'apprentissage.   * Il n'y a pas assez de data pour l'apprentissage: il faut au moins 2000 items par objet: ici il n'y a que 640 items pour l'apprentissage.
-  * Le script fait une Optimisation des paramètres sur le Learning Rate avec 100 tests.  +  * Le script fait une Optimisation des paramètres avec 10 test sur le Learning Rate, recommencer 10 fois pour réinitialiser le fichier de poids.  
-  * Mais à chaque calcul avec un nouveau learningrate, le fichier de poids est réinitialisé avec un random: il faudrait l'initialiser et l'enregistrer juste après la récupération des datas, en l'indexant. Puis relancer 100 fois le tout pour voir l'influence de l'initialisation+  * Cela prend beaucoup de temps, d'où la nécessité d'avoir un gros centre de calcul pour les professionnels de l'IA. [[aitextgen#quel_carte_graphique_choisir_en_juin_2020|Quel carte graphique choisir en Juin 2020 ?]]
-  * Cela ferait 100*100 cycles soit 36000 secondes soit 10 heures pour un tout petit exemple. +
-  * D'où la nécessité d'avoir un gros centre de calcul pour les professionnels de l'IA. [[aitextgen#quel_carte_graphique_choisir_en_juin_2020|Quel carte graphique choisir en Juin 2020 ?]]+
 ===== Avec cupy ===== ===== Avec cupy =====
-  * Voir **[[cupy_vs_numpy|Cupy: calcul numpy avec CUDA]]** pour adapter un script numpy en cupy.+Voir  
 +  * **[[cupy_vs_numpy|Cupy: calcul numpy avec CUDA]]** pour adapter un script numpy en cupy
 +  * **[[compilation_de_oepncv_avec_cuda_sur_ubuntu|Installation de CUDA]]** sur Xubuntu 18.04 
 + 
 +====Résultat==== 
 +  Temps de calcul par cycle: 18.05 s 
 +  Meilleur résultat: learningrate=0.0208 efficacité=82.9 
 +   
 +====Commentaires==== 
 +Le résultat est très mauvais, alors que c'était mieux avec le sémaphore et que le code est le même. Le chargement en RAM GPU prend du temps, qui n'est pas compensé par le calcul plus rapide, car il est trop court
 ==== Code sur GitHub ==== ==== Code sur GitHub ====
   * **[[https://github.com/sergeLabo/simple_ai_example/blob/master/main_cupy.py|simple_ai_example/main_cupy.py]]**   * **[[https://github.com/sergeLabo/simple_ai_example/blob/master/main_cupy.py|simple_ai_example/main_cupy.py]]**
  
 ===== Avec Tensorflow ===== ===== Avec Tensorflow =====
 +====Installation====
 +  sudo pip3 install tensorflow
 +====Ressources====
 +  * **[[le_semaphore_avec_tensorflow|Le sémaphore avec TensorFlow]]**
 +  * [[https://fr.wikipedia.org/wiki/TensorFlow|TensorFlow]] sur Wikipedia
 +  * [[https://www.tensorflow.org/|www.tensorflow.org]]
 +  * [[https://github.com/tensorflow|tensorflow]] sur github
  
 +==== Code sur GitHub ====
 +  * **[[https://github.com/sergeLabo/simple_ai_example/blob/master/main_numpy.py|simple_ai_example/main_tensorflow.py]]**
  
 +==== Résultat sur un portable sans GPU avec epochs = 10====
 +<code>
 +.......
 +Epoch 7/10
 +500/500 [==============================] - 0s 815us/step - loss: 0.6596 - accuracy: 0.8134
 +Epoch 8/10
 +500/500 [==============================] - 0s 819us/step - loss: 0.6181 - accuracy: 0.8217
 +Epoch 9/10
 +500/500 [==============================] - 0s 817us/step - loss: 0.5782 - accuracy: 0.8306
 +Epoch 10/10
 +500/500 [==============================] - 0s 823us/step - loss: 0.5511 - accuracy: 0.8389
 +125/125 [==============================] - 0s 742us/step - loss: 0.5752 - accuracy: 0.8345
 +Testing ......    
 +Efficacité sur les tests: 83.45 %
 +Apprentissage en 4.9 secondes
 +</code>
  
 +==== Résultat sur un portable avec GPU GTX 850m avec epochs = 10====
 +<code>
 +.......
 +
 +  32/4000 [..............................] - ETA: 1s - loss: 0.6138 - acc: 0.812
 +  3904/4000 [============================>.] - ETA: 0s - loss: 0.5522 - acc: 0.840
 +  4000/4000 [==============================] - 0s 17us/sample - loss: 0.5527 - acc: 0.8403
 +
 +Testing ......    
 +Efficacité sur les tests: 84.03 %
 +Apprentissage en 5.9 secondes
 +</code>
 +====Commentaires====
 +C'est rapide et efficace !\\
 +Il faut bien comprendre que le principe des calculs avec Tensorflow est le même que les scripts python.
 +Tensorflow est optimisé, et en plus tourne avec carte graphique ou non !!
  
 +Avec GPU, le chargement en RAM GPU prend du temps, qui n'est pas compensé par le calcul plus rapide, car il est trop court.
  
-{{tag>ia machine_learning python python3 sb}}+{{tag> ia python sb }}
simple_ai_example.1599395562.txt.gz · Dernière modification : 2020/09/06 12:32 de serge