Part 6 – Bases de l’Intelligence Artificielle – Deep le… — Transcript

Introduction à l'implémentation du deep learning avec TensorFlow et Keras, chargement de datasets et visualisation d'images.

Key Takeaways

  • Le dataset EMNIST est pré-découpé en ensembles d'entraînement et de test facilitant la validation.
  • La visualisation des données est essentielle pour comprendre la nature des images avant modélisation.
  • Configurer les GPU dans TensorFlow optimise significativement la vitesse d'entraînement.
  • La normalisation des données améliore la performance des modèles de deep learning.
  • L'IA générative permet d'exploiter des modèles pré-entraînés sans nécessiter un nouvel entraînement.

Summary

  • Présentation d'un notebook pour le deep learning rappelant les concepts de base.
  • Chargement du dataset EMNIST via Keras, avec explication des variables d'entraînement et de test.
  • Visualisation des images du dataset en niveaux de gris avec Matplotlib.
  • Explication de la configuration des GPU dans TensorFlow pour accélérer les calculs.
  • Introduction à la création d'un réseau de neurones artificiels (ANN) avec Keras Sequential.
  • Détail sur la structure des couches du réseau, notamment la couche Flatten pour les images 28x28.
  • Présentation des étapes d'entraînement, validation et détection de surapprentissage.
  • Importance de la normalisation des données avant l'entraînement.
  • Mention de l'utilisation d'OpenCV pour le traitement d'images.
  • Introduction à l'IA générative et exploitation de modèles pré-entraînés comme GPT.

Full Transcript — Download SRT & Markdown

00:06
Speaker A
Pour cette partie-là, donc je vous ai préparé donc un notebook. Donc le premier, c'est celui-là, c'est deep learning, euh, euh, notebook. Bon, dans lequel je rappelle un peu les concepts de base que je viens de vous présenter.
00:26
Speaker A
Donc ça, c'est les concepts de base que je viens de vous présenter. Et après, donc on va commencer, euh, pour charger un dataset.
00:33
Speaker A
Alors, comme vous le voyez, donc la première des choses qu'on aura besoin d'installer, c'est, on aura besoin, alors je vais agrandir un peu. Ça, c'est mieux peut-être d'abord, les librairies que vous aurez besoin d'importer.
00:52
Speaker A
Donc d'abord TensorFlow, donc TF, et vous savez, donc dans TensorFlow, vous avez également, euh, Keras. Donc rappelez-vous, Keras, c'est quoi ? C'est juste une API au-dessus de Keras qui permet de faciliter la création des modèles de deep learning.
01:10
Speaker A
Alors, je vais exécuter ça. Alors, donc j'importe d'abord TensorFlow et puis j'ai besoin de charger le dataset. Alors, quel dataset ? Alors, ici, donc je vais utiliser, euh, vous dans Keras, vous avez une, dans Keras, vous avez dataset.
01:29
Speaker A
Ça vous permet d'accéder à des datasets classiques qui sont connus, parmi lesquels il y a EMNIST. Donc vous voyez, donc EMNIST, j'utilise une fonction qui s'appelle load_data.
01:45
Speaker A
Alors en fait, cette fonction load_data, il se connecte, il va télécharger, c'est-à-dire ce dataset-là, et après il va me le charger dans ses variables.
02:04
Speaker A
Alors ici, au niveau des variables, j'ai quatre, quatre, quatre parties. Donc j'ai X_train, c'est la partie, euh, d'entraînement. Y_train, c'est la sortie, l'output.
02:18
Speaker A
Alors ici, vous avez également X_test, Y_test. C'est-à-dire ici, vous n'aurez pas besoin de faire un split, c'est-à-dire le dataset que vous avez téléchargé, il y a déjà une partie pour l'entraînement.
02:31
Speaker A
Euh, ça c'est le input, ça c'est le output de l'entraînement, ça c'est le output des données de test et le output des données de test.
02:40
Speaker A
Donc ça, ça permet, j'exécute. Bon, ça télécharge si vous le faites la première fois, ça prend un peu de temps pour télécharger, mais comme c'est déjà téléchargé ici, c'est un peu rapide.
02:57
Speaker A
Alors, la première des choses que vous allez faire, c'est de regarder en fait les, les, c'est-à-dire la taille de chaque partie du dataset.
03:09
Speaker A
Alors, si je prends X_train et X_test, donc ça, si vous exécutez ça, vous voyez ici la dimension du dataset. Il y a combien de, d'images ? Il y a combien de lignes ?
03:20
Speaker A
Alors, sur X_test, X_train, il y a combien ? Il y a 600. Il y a 60 000 lignes. Chaque ligne, c'est une petite image comme ça qui peut être soit un 0, soit 1 écrit à la main. D'accord ?
03:25
Speaker A
C'est une petite image. OK. Ça, c'est pour, et après chaque image, donc chaque ligne, il y a combien ? Il y a des matrices de combien ? De 28 x 28.
03:40
Speaker A
Donc vous voyez ici, donc chaque, chaque ligne, c'est une matrice 28 x 28. Ça me donne, c'est une petite image en quelque sorte.
04:03
Speaker A
Euh, c'est de, c'est une basse résolution. Alors pour les données de test, qu'est-ce que j'ai ? J'ai combien ? J'ai 10 000 pour les données de test. La même chose, la dimension c'est 28 x 28.
04:22
Speaker A
Alors si, si vous voulez, si vous voulez afficher, afficher par exemple une image, j'utilise par exemple X_train, par exemple de zéro. Regardez donc X_train de 0.
04:34
Speaker A
Donc qu'est-ce que j'ai ? Et donc j'ai ici, donc c'est une image 28 fois 28. Alors si vous voulez afficher, c'est-à-dire cette, cette petite image au format graphique, donc je vais supprimer ça, euh, et bien tout simplement, je vais regarder, donc je vais faire une petite, une petite boucle qui me permet d'afficher quelques images, donc juste pour voir qu'est-ce qu'il y a dans, dans ce dataset.
04:49
Speaker A
Alors pour cela, donc j'ai besoin d'utiliser Matplotlib. Je vais utiliser plt.gray. Donc je vous rappelle ça, on l'a déjà utilisé si vous voulez dessiner une image au niveau de gris, c'est-à-dire en blanc et noir, parce que sinon il va vous dessiner en couleur et comme de base c'est des couleurs, c'est des couleurs, c'est-à-dire monochrome, donc qu'on va utiliser au niveau de gris, et je vais donc utiliser plt pour créer, euh, en fait une, un, une figure dans laquelle j'ai combien de colonnes ? Le nombre de colonnes c'est 10.
05:01
Speaker A
C'est-à-dire, c'est ces, ces 10 colonnes que vous voyez là, parce que je, je vous, je voudrais en fait les afficher en même ligne, et la taille de la figure c'est 20 x 20, donc ça fix size.
05:12
Speaker A
Alors qu'est-ce que je vais faire ? Donc je vais faire une boucle for index in range de 10, c'est-à-dire je vais faire varier l'index de 0 jusqu'à combien ? Jusqu'à 9.
05:29
Speaker A
C'est-à-dire ça commence de 0 jusqu'à 9. Qu'est-ce que je vais faire ? Eh bien, je vais utiliser tout simplement, c'est, je vais utiliser l'axe. Vous voyez donc l'axe, l'axe que j'ai ici, euh, c'est l'axe que j'ai ici.
05:45
Speaker A
Donc je vais prendre axe de, de i, axe de index. Alors c'est par exemple index égal à 0, qu'est-ce que je vais avoir ? Index de 0, c'est-à-dire c'est cette partie-là, et j'appelle, euh, imshow, c'est-à-dire je vais afficher l'image qui se trouve où dans X_train de quoi ?
06:02
Speaker A
De, de zéro, c'est-à-dire ici dans la première colonne de, dans la première colonne de l'axe, je vais afficher la première image.
06:18
Speaker A
Alors, sauf que ici, donc je vais faire ça pour 1, pour 2, pour 3. Et comme j'ai ici index, il varie de 0 jusqu'à 9. À la place de 0, je vais mettre index. Et après, quand j'affiche l'image, il va tout simplement, je vais, je vais voilà.
06:35
Speaker A
Donc je vais afficher juste un titre. Donc ax[index].set_title. Je vais afficher ici un titre comme vous voyez là dans le titre set_title. Je vais écrire digit ça, et je vais afficher Y_train de index.
06:48
Speaker A
Vous voyez donc Y_train, c'est, c'est le output. Alors le output, ça peut être soit zéro, c'est-à-dire c'est le, la, ça c'est un 0. Ça c'est quoi ? C'est un 8. Ça c'est un 8. Et cetera.
07:02
Speaker A
Bon, ça c'est si vous faites ça, bon, vous allez avoir juste, alors si vous faites varier au lieu de 10, vous mettez par exemple 12. Là, vous mettez quand même combien de colonnes ? 12. Vous exécutez, vous allez avoir ici donc de 0 jusqu'à 12.
07:19
Speaker A
C'est comme si on vient d'afficher les, les 12 premières images dans notre dataset. Donc à la première jusqu'à la 12.
07:41
Speaker A
Alors le dataset, il est écrit à la main vraiment, celui qui a fait ça. Il y a combien d'images ? Un dataset qui écrit avec différentes, et cetera.
07:58
Speaker A
C'est quand même, c'est du travail, n'est-ce pas ? Après on va dire ça c'est un 0, ça c'est un 1, ça c'est, et cetera. Donc je crée, euh, alors euh, donc ça c'est la première.
08:09
Speaker A
Alors maintenant, il y a une chose qui est importante, c'est que parfois vous voulez avant de faire votre modèle de deep learning, si vous voulez savoir est-ce que votre machine, il y a un CPU ou bien est-ce qu'il y a des GPU, et cetera, ça c'est important.
08:22
Speaker A
Maintenant, je dois dire attention, sur TensorFlow, regarde-moi dans ma machine, cherche est-ce qu'il y a des GPU. Ici, il y a des GPU, je dois les configurer. Je dois lui dire, tu peux utiliser tous ces, ces GPU.
08:26
Speaker A
Alors, comment on peut configurer les GPU ? C'est très simple. On va utiliser TF.
08:44
Speaker A
Donc, je vous rappelle que TF, c'est quoi ? C'est TensorFlow. Config, j'appelle une fonction experimental, listes la partie, vous mettez soit GPU, soit CPU.
09:00
Speaker A
Si vous mettez GPU, il va chercher quels sont les, les différents GPU qui existent dans votre machine. Si vous mettez CPU, donc il va chercher les CPU.
09:16
Speaker A
Alors ici, donc GPU, donc j'ai ici une liste. Alors maintenant, euh, si vous voulez, si vous voulez afficher le, euh, maintenant qu'est-ce que je vais lui dire ? Je vais lui dire que je vais, bon, ça c'est une liste. OK ?
09:21
Speaker A
Je vais lui dire que for GPU in GPU, c'est-à-dire pour chaque GPU qui se trouve dans cette liste TF config experimental set_memory_growth de GPU.
09:34
Speaker A
Ça veut dire que tous les GPU que je vais trouver dans la liste, je vais demander à TensorFlow, il peut les utiliser.
09:46
Speaker A
Alors ici, donc si vous avez plein de GPU, donc ça veut dire plein de mémoire. Donc c'est-à-dire, c'est ça va accélérer encore plus le calcul.
10:00
Speaker A
Donc bref, euh, même si vous n'allez pas voir ça, c'est à peu près ce que je viens de vous dire. Maintenant, votre TensorFlow, il est capable maintenant d'utiliser ses...
10:15
Speaker A
Donc ça c'est une autre histoire. Donc ici, je suppose que vous n'avez pas de GPU.
10:20
Speaker A
OK parfait. Alors ici donc euh maintenant ça c'est juste un début. Alors maintenant on va on va créer notre réseau de neuron. Dans un premier temps, je vais commencer par créer unn in c'est-à-dire artificial network.
10:39
Speaker A
Et bien tout simplement si vous voulez créer maintenant un réseau de neuron ANN, bah c'est très simple, ben vous créez un le modèle ANN, vous faites taper la Kas. Voyez donc Kas, il contient un modèle qui s'appelle séquentiel. Alors séquentiel, c'est tout
10:57
Speaker A
simplement c'est un modèle séquentiel, c'est-à-dire quoi ? Dans lequel vous allez empiler un ensemble de couches. Alors c'est le plus le plus courant parce que nous avons dit c'est quoi ? un un réseau de neurone. Un réseau de neurone se compose d'un
11:10
Speaker A
ensemble de couches qui sont empilées l'une à la suite de l'autre. Donc c'est c'est séquentiel. Donc c'est c'est le le modèle qu'on va utiliser. Alors qu'est-ce qu'on va mettre dans la première couche ? Alors voyez donc si si vous vous
11:25
Speaker A
rappelez dans le dans notre cas alors maintenant notre réseau neurone il y a input. Ça c'est input. Et quand on fait input il y aura combien de neurones ? Alors chaque image, regardez, chaque image combien de pixels ? Chaque image c'est 28 28 x 28
11:42
Speaker A
pixels. Donc c'est-à-dire en fait il y a combien input ? Il y a combien de de neuron input ? C'est 28 x 28. Alors c'est pour cela ici donc je vais utiliser Kas layers et lequel type de de
11:56
Speaker A
de de couche ? Donc ici je vais utiliser input. Alors input, vous avez ici la la dimension de l'input maintenant donc la première couche, vous lui dites juste je vais recevoir input une matrice de combien ? Une matrice de 28 x 28. Donc
12:15
Speaker A
mon image, il a une taille de 28 x 28. Ça c'est la première couche. OK.
12:23
Speaker A
Alors maintenant en réalité en réalité c'est que cette couche là il faut qu'il devienne un vecteur parce que quand vous utilisez an la première couche c'est un c'est un vecteur c'est-à-dire ma matrice de 28 x 28 il faut que ça devienne un vecteur
12:42
Speaker A
n'est-ce pas alors vous avez deux façons de le faire soit que vous le faites vous-même je je vous ai mis ça en commentaire ici. J'ai utilisé extrain reshape. Je vais rehap, c'est-à-dire je vais transformer ma matrice en en une
12:55
Speaker A
matrice de combien ? De 28 x 28. Ça vous donne un vecteur de 28 x 28. Mais ici, vous n'avez pas besoin de de faire ça vous-même. Il suffit d'utiliser flat.
13:07
Speaker A
Vous rappelez que flatten dont je vous ai parlé, flat, qu'est-ce qu'il permet de faire ? Il prend des matrices, il va les aplatir en un seul vecteur. Donc finalement H la couche, la deuxième couche flat, qu'est-ce qu'il permet de
13:20
Speaker A
faire ? Ben, il permet de de vous créer un vecteur de combien ? De 28 x 28. Donc vous voyez donc notre réseau de neuron maintenant la première couche la première couche de de neurone c'est celle-là. Kas layers, ça c'est la couche
13:37
Speaker A
cachée. Alors maintenant dans un ann, les couches cachées c'est des des couches de type d'inlyer. C'est quoi une couche de type d'inser ? Bah c'est une couche qui est entièrement connectée.
13:51
Speaker A
Palette dense ça veut dire quoi ? Ça veut dire il y a un ensemble de neurones tous les tout chaque neurone est connecté à l'ensemble des neurones de la couche suivante. Donc c'est ça la couche d'un d'un slayer. Alors c'est ce que je je vais
14:10
Speaker A
faire ici vous voyez donc j'utilise une couche d alors ici il y a combien de neurones ? C'est à moi de là personne qui va vous dire aléatoirement je vais mettre 200 300 c'est à vous de mettre le nombre de
14:26
Speaker A
neuron que vous voulez. Alors ici je mets 100 et vous savez chaque neuron il utilise une fonction d'activation. Ah si vous avez activation ici qu'est-ce que je vais utiliser ? Sigmoïd. Alors vous pouvez utiliser reli sigmoïd il y a des
14:40
Speaker A
fonctions et cetera. Alors ça c'est la première couche. Donc la couche il y a combien de neurones ? C'est 100. Alors maintenant, ça c'est une couche cachée.
14:49
Speaker A
Maintenant je vais créer la couche de de output, la couche de sortie. Donc output dans mon cas ici output ici output la couche est de type den c'està-dire il est entièrement connecté mais il y a combien de neurones
15:07
Speaker A
le nombre de classes on veut détecter quoi dans notre dataset ? On veut détecter est-ce qu'il s'agit d'un é ou bien d'un 1 ou bien 2 3 jusqu'à 9.
15:15
Speaker A
C'estàd il y a combien des il y a combien de classes ? 10 10 classes. Donc c'est c'est pour cela qu'on va créer ici une couche dense de combien de neuron de 10. Et la fonction d'activation je je
15:28
Speaker A
garde toujours sig. Et ben tout simplement regardez ce que vous voyez ici. Et ben là vous avez créé grâce àas vous avez créé un réseau de neuron de type ANN pas c'est un multilayer percepton.
15:45
Speaker A
dans lequel vous avez une couche d'entrée, il y a une couche cachée et une couche de sortie. Une seule couche.
15:55
Speaker A
Alors si vous voulez ajouter une deuxième, une trè, vous pouvez ajouter. Alors maintenant, je commence par une couche. Généralement, quand vous faites le modèle, vous n'allez pas commencer par 10 ou la 20 couches et cetera. Ben, je vais créer une couche. Je crée mon
16:07
Speaker A
modèle, je regarde les performances. Si c'est pas bon, j'ajoute une autre couche et parce que et après donc si vous voyez que avec une seule couche par exemple là c'est un problème très simple, c'est des petites images, vous allez voir qu'avec
16:20
Speaker A
une couche déjà ça donne quelque chose. Je vais l'ajouter manuellement je vais la répéter c'est exactement je veux ajouter par exemple une deuxième couche cachée. Donc je fais ça contrôle V et je mets ici par exemple 80 Num.
16:36
Speaker A
Vous voulez ajouter une une autre couche, vous ajoutez. Donc il y a pas de pas de problème. Alors maintenant, une fois que vous créez le le réseau de neuron ANN, vous aurez besoin de le compiler. Alors pour le compiler, si vous rappelez bien,
16:51
Speaker A
j'avais parlé, vous dites "J'ai mon réseau, il est là." Voilà, il y a input, il y a une couche cachée, il y a output. Mais maintenant quand je vais l'entraîner, je vais l'entraîner avec quel optimizer ? Donc c'est-à-dire quand je vais il me
17:08
Speaker A
faut, rappelez-vous donc l'optimizer, c'est quoi ? L'optimizer, c'est la fonction qui va euh minimiser l'erreur.
17:16
Speaker A
Alors ici donc vous avez Adam, vous avez SGD stocastique gradient descente mais nous on va utiliser l'une ou l'autre peu importe. Donc je vais utiliser SGD ou Adam et vous testez. Alors quoi d'autre ? Donc vous aurez besoin de faire ça. Alors dans
17:36
Speaker A
compile, j'utilise quel Optimizer ? Donc je vais compiler mon réseau de neuron en utilisant quel je vais utiliser Adam.
17:43
Speaker A
Donc Adam donc c'est c'est l'un de des en fait des algorithmes de de la rétropagation du gradient qui permet de de minimiser l'erreur dans les réseaux de neuron.
17:56
Speaker A
Et le los maintenant los l'erreur rappelez-vous donc dans l'erreur donc je vous ai dit que en fait dans les erreurs on peut utiliser means squed error et cetera. Ça dépend maintenant est-ce que vous faites la régression ou bien la
18:11
Speaker A
classification. Généralement quand vous faites la régression rappelez-vous donc dans la régression on utilise MSE n'est-ce pas ? Mais dans la classification, alors si vous avez un classifieur binaire, il y a des fonctions d'erreur qui sont spécifiques.
18:25
Speaker A
Si vous utilisez un classifur multiclasse, il y a des fonctions qui sont plus pratiques. Alors ici, comme on a un classifieur multiclasse, on va utiliser une fonction d'erreur loss qui s'appelle sparse categorical cross entropy. Donc la plus utilisée
18:43
Speaker A
généralement c'est quand vous avez un classifieur multi multicasse. Donc c'est une fonction qui permet de alors si vous cherchez dans la documentation, vous allez trouver la formule qui permet de de calculer l'erreur. Alors maintenant une fois qu'il va faire le le il va faire
19:00
Speaker A
l'entraînement, je voudrais qu'il me calcule une métrique. Comment je vais mesurer un classifieur ? Donc si vous rappelez pour mesurer un classifieur les performances d'un classifieur il y a écure ici. Quoi d'autre ? Recol et score précision n'est-ce pas ? Alors
19:19
Speaker A
ici ici donc je vais utiliser EQurac c'est la plus générale et je vous rappelle que EQur il est très pratique si vous avez un dataset qui est équilibré.
19:29
Speaker A
Alors, c'est notre cas ici. On va voir tout à l'heure que le nombre de 0, le nombre de 1, le nombre de 2, c'est presque la même chose. C'est c'est pas presque c'est la même chose. Alors ça c'est est-ce que ça c'est compliqué ?
19:44
Speaker A
Alors ça c'est un copiercollé honnêtement. C'est-à-dire que les gens qui font du diplurine à un moment donné, je veux créer un réseau, ben je vais faire ça. Je vais faire des copiescollés, je vais mettre je vais changer le nombre de neuron et j'ai créé
19:53
Speaker A
mon mon réseau. Donc en faisant ça, c'est que vous êtes en train d'utiliser quoi ?
19:58
Speaker A
Vous êtes là, vous êtes en train d'utiliser Kas. Votre application il utilise Kas mais Kas il utilise Torfow qui va utiliser ça, qui va utiliser ça, qui va utiliser ça, qui est capable d'exposer. Donc c'est à peu près
20:13
Speaker A
c'est-à-dire les framework, c'est ça le rôle. Le rôle c'est que ils vont vous cacher la complexité des choses, mais réellement c'est fou. C'est-à-dire ce qui se fait réellement pour vous. Vous écrivez 5 lignes 6 lignes, n'est-ce pas ? Mais en réalité, vous déclenchez, si
20:25
Speaker A
vous avez des GPE, vous déclenchez des calculs qui sont très très complexes. Ben voilà. Alors ici, donc on va on va faire ça. Donc cette opération généralement c'est rapide. Bon, vous voyez, c'est instantané parce que je n'ai pas encore lancé le l'entraînement.
20:44
Speaker A
Alors si vous voulez ce qui est bien avec vous avez ANN votre modèle vous pouvez faire appel à une fonction qui s'appelle summary. Donc si vous l'exécutez ça vous donne un résumé de votre réseau de neuron. Alors vous voyez
20:56
Speaker A
donc votre réseau de neuron contient une couche de type flaton entrée. C'est quoi ? Regardez le nombre de neurones 784 784 c'est 28 x 28 x 28 ça veut ça la deuxième couche et les types d'ins il y
21:14
Speaker A
a combien de neurones 100 la troisème couche et les type il y a il y a 10 d'accord et si vous voulez voir maintenant le nombre de paramètres et ça c'est très intéressant regardez si comment on peut calculer le nombre de
21:30
Speaker A
paramètres vous voyez Donc chaque je les paramètres d'un réseau neuron c'est les c'est les connexions les poids les poids de chaque connexion c'est un paramètre. Si vous voyez que tous c si vous connectez tous ces nor là avec des centaines et ben si vous faites
21:45
Speaker A
vos calculs bon c'est pas la peine de calculer parce que c'est ici vous voyez donc ici pour la couche d' il y a combien de paramètres à calculer ?
21:56
Speaker A
78500 poids d'or pour la la course de sortie, vous avez ce nombre. Donc c'est-à-dire au total, le nombre de paramètres total c'est 7000. Donc vous voyez donc pour cette configuration c'est pas beaucoup.
22:09
Speaker A
C'est pas un réseau qui est très grand pour juste avec une seule couche, vous avez dans l'entraînement vous avez une matrice de combien ?
22:19
Speaker A
Alors, une matrice qui qui contient à à déterminer le nombre de de la matrice de si vous voulez de poids, il contient 79510. OK ? Alors si vous jetez une couche, vous allez voir ça s'explose parce que vous connectez ça avec ça donc
22:34
Speaker A
ça devient très euh très important. Voilà. Donc ça c'est summary, ça vous donne un un un un sommaire.
22:43
Speaker A
Alors maintenant si vous voulez entraîner, on va utiliser n.fit comme d'habitude. Bah qu'est-ce qu'on va lui donner ?
22:51
Speaker A
input input output c'est white friend. Alors maintenant si vous faites ça, ben il vous donne il va il va lancer l'entraînement. Mais quand il lance l'entraînement, il y a un ensemble de paramètres qui sont définis par défaut parce qu'il y a beaucoup
23:11
Speaker A
d'hyperparamètres. Alors je vous rappelle, je sais pas si je l'ai jamais fait. Donc si parfois vous voulez savoir la méthode fit, vous prenez ça fit, vous mettez point d'interrogation vous exécutez. Ouais. Si vous mettez une méthode et vous mettez un point
23:32
Speaker A
d'interrogation et vous exécutez, ça vous donne la documentation de cette méthode. Et ça vous donne une idée. Il il y a combien de paramètres ? Par exemple, regardez, quand vous faites fit, il y a x, il y a.
23:43
Speaker A
Il y a par exemple, regardez par exemple ici, j'ai euh j'ai des paramètres comme batch size. La valeur par défaut, il le définit pas. Ici le nombre d'époques, le nombre d'époque, c'est c'est 1 par défaut. Alors, c'est quoi le
24:02
Speaker A
nombre d'époque ? Alors, ici, donc moi je veux pas utiliser 1. Donc voilà. Alors l'histoire des époques, il faut la comprendre parce qu'elle est très importante des pleurer. Pourquoi ? Parce que regardez bien, je vais vous expliquer. Supposons je voudrais j'ai un
24:20
Speaker A
dataset, j'ai par exemple cinq exercices avec solution, n'est-ce pas ? Cinq exercices avec solution.
24:30
Speaker A
Et je voudrais donc faire, j'ai des étudiants, des élèves, je voudrais qu'il apprennent à travers ces exercices avec solution. Donc c'est-à-dire j'ai les inputs et les outputs. Imaginez un étudiant donc je vais lui montrer le premier exercice. Il va regarder le premier
24:49
Speaker A
exercice, il va regarder la la solution. Et quand il regarde l'exercice et la solution, pour comprendre cet exercice avec cette solution, il va changer le quelque chose dans son cerveau, n'est-ce pas ? Comprendre, ça veut dire quoi ?
25:04
Speaker A
Comprendre, ça veut dire vous êtes en train de changer les les poids de des connexions. C'est ça les paramètres.
25:10
Speaker A
Comprendre, ça veut dire c'est que si vous avez compris, n'est-ce pas ? Supposons vous avez vous avez donné le premier exercice avec la solution. Vous regardez le premier exercice, vous lui donner le deuxième exercice avec solution. Il va essayer de
25:25
Speaker A
le comprendre le 3e, le 4e, le 5e, le 6e, le 7e. Mais le problème fois que vous arrivez au 10e, euh il va comprendre le 10e mais il a tendance à oublier le le premier. C'est-à-dire, je vais vous
25:41
Speaker A
je vous ai montré quand je vous montre les 10 exercices avec solution une époque une époque d'apprentissage c'est-à-dire mais en réalité avec une seule époque c'est-à-dire une seule passe avec une seule passe parfois on n'est pas sûr de
25:56
Speaker A
de d'apprendre d'avoir compris soi-disant d'apprendre tous les les cas n'est-ce pas ? Qu'est-ce que je vais faire ? Ben, je reviens au premier. Je te donne encore le premier, voilà la solution. Le 2è, voilà la solution le 3è. Et si je
26:11
Speaker A
fais ça 10 fois, ça veut dire que j'ai utilisé combien d'époques ? disez pas.
26:17
Speaker A
Ben c'est ça ce qu'on fait généralement dans si vous avez un dataset qui contient des milliers d'exemples, si vous avez beaucoup de données généralement parfois avec une seule époque vous pouvez atteindre des bons résultats. Mais dans la majorité des cas
26:30
Speaker A
ce qu'on va faire c'est que quand on fait l'entraînement on va lui donner vous désactivez le microphone s'il vous plaît. Donc mais généralement qu'est-ce qu'on va faire ? On va prendre notre dataset, on va donner input output, on va essayer de de calculer les
26:47
Speaker A
poids. Mais quand il calcule les poids, si vous regardez la précision, vous allez trouver que c'est pas c'est pas très intéressant. Et ben, qu'est-ce que je vais faire ? Je vais encore lui donner je reprends l'opération une deuxième fois. Une deuxième fois la
27:00
Speaker A
deuxème époque, la 3e la 4è et ben tout simplement ici ça c'est un hyperparamètre. Donc au début si vous mettez rien c'est combien d'époque ?
27:10
Speaker A
Vous voyez ici la valeur par défaut c'est 1. Ici la valeur par défaut c'est c'est 1. Et regardez validation split c'est quoi la valeur par défaut ?
27:21
Speaker A
C'est zéro. Ça veut dire quoi validation split ? que quand il fait l'entraînement, quand vous vous lancez l'entraînement, vous allez lui dire quand tu fais l'entraînement, tu vas prendre le dataset d'entraînement, tu vas encore le diviser en deux parties. Il y a une
27:37
Speaker A
partie pour l'entraînement, il y a une partie pour la validation. Et le pourcentage des données de validation ici, c'est combien ? Ici, je vais préciser, c'est pas zéro, c'est 0,3. Ça veut dire quoi 0,3 ?
27:50
Speaker A
C'est-à-dire, je vais lui demander, tu prends Xtrain. Il y a combien Xtrain ? Il y a 10000 100000 non c'est combien ?
27:59
Speaker A
60000 donc 60000 alors les 60000 il va utiliser que 70 % pour faire le l'entraînement à chaque fois pour chaque époque quand il va entraîner, il va valider avec le les données de validation. Ce qui me permet de voir
28:16
Speaker A
pour chaque époque la la précision ou bien écurc. OK. Alors ici donc j'utilise c'est pour cela qu'on utilise ici euh validation split. Alors si vous mettez pas, ça veut dire que de toute façon il fait pas de validation, il va entraîner et après
28:33
Speaker A
c'est à vous à vous par la suite de faire le la validation et cetera. Oui.
28:41
Speaker A
Oui. Monsieur, j'ai une question. Pourquoi le batch size ici c'est zéro ? Bien non. Merci. Merci d'avoir posé la question. Alors parmi les paramètres alors ils sont là ils sont là alors voyez donc ici l'époque les les époques ils sont où les époques
29:00
Speaker A
alors batch size et les nan par défaut c'estàdire il n'est pas il n'est pas défini alors en fait c'est quoi le le batch size parce que vous avez le batch 16 et les époques. Alors, qu'est-ce qu'il fait généralement en fait le
29:13
Speaker A
c'est-à-dire qu'est-ce qu'il fait un Sorflow et les framework ? C'est que quand ils vont quand c'estàdire dans les réseaux Noron, quand on fait l'entraînement, si vous avez par exemple un jeu de un jeu de données de 60000 comme l'exemple ici, alors ce jeu de
29:29
Speaker A
données de 60000 on va les diviser en un ensemble de parties, n'est-ce pas ? En annon chaque partie, c'est ce qu'on appelle un batch. Un batch. Par exemple, si vous prenez B 16 = 30, ça veut dire quoi ? Ça veut dire que
29:45
Speaker A
regardez pour BH 16 = 30, ça veut dire quoi ? Ça veut dire que le réseau de neurone, il va lui donner le premier exemple, le 2e, le 3e, le 4e. Il lui montre le 1er, le 2e, le 3è jusqu'à 30.
29:56
Speaker A
Une fois que j'atteins 30, je vais calculer l'erreur. Et si je calcule l'erreur, je vais minimiser, je vais essayer de faire la rétro propagation pour minimiser l'erreur avant de passer au batch suivant. C'est-à-dire pour chaque batch, il fait cette opération de mise à jour
30:14
Speaker A
des des poids. Donc c'est-à-dire au lieu de si vous avez bas 16 ég à 1, ça veut dire quoi ? Ça veut dire que il doit d'abord montrer tous les exemples au réseau de neurones, il calcule l'erreur globale et après il essaie de mettre à
30:26
Speaker A
jour. Mais généralement, c'est pas ce qu'il fait souvent, c'est que si s'il est un nan, c'est-à-dire il détermine par défaut, c'est-à-dire un bat 16, il le calcule en fonction de la taille du bas. Mais si vous voulez le fixer, si
30:40
Speaker A
vous voulez le fixer, vous ajoutez ici base 16 égale valeur. Alors ici donc je je garde la valeur par si vous mettez rien, c'est-à-dire c'est lui qui va choisir la la valeur en fonction de la taille des des données. Mais après si
30:52
Speaker A
vous voulez le fixer, vous le fixez. Donc voyez donc ici, je peux lancer l'entraînement. Alors voyez donc la première époque, regardez la première époque il a terminé il est sur accurac de combien ? 72 % mais pour la
31:08
Speaker A
validation regardez la validation la validation est à 89 la deuxème époque j'ai 89 % la validation et est ça a l'air d'être bon n'est-ce pas et jusqu'à il y a combien d'époques ici 10 donc à partir de la 10e époque
31:28
Speaker A
j'ai atteint une performance de 91 % n'est-ce pas 80 91 % pour les données d'entraînement, c'est ça. Mais pour les données de validation qu'il a choisi, c'est 91 %. C'est-à-dire ça ça a l'air d'être bon, n'est-ce pas ? Mais 91 c'est
31:48
Speaker A
pas beaucoup par rapport à un problème comme ça. Moi, je voudrais atteindre quelque chose de proche de 100 %. Alors maintenant, qu'est-ce que je peux améliorer ? La première des choses que vous allez améliorer, c'est d'abord la normalisation des données. Alors, si
32:06
Speaker A
vous remarquez, si vous affichez les données ici, donc je l'ai montré tout à l'heure vous affichez par exemple XTIN de zé, bah vous allez voir c'est des matrices. Alors ces matrices là, il y a des nombres, n'est-ce pas ? Et ben quand
32:24
Speaker A
vous avez zéro, ça veut dire c'est le noir. C'est normal parce que il y a beaucoup de noirs dans vos images. Puis qu'il y a beaucoup de noirs, c'est c'est des c'est c'est des zéros. Et après c'est quand c'est un
32:36
Speaker A
blanc, vous savez un blanc c'est 255. C'est-à-dire pour une une c'est-à-dire si vous avez une image à à un niveau degré, c'est-à-dire vous avez ici c'est une image qui est codée sur 8 bit. Ici vous avez 8 bit si vous
32:51
Speaker A
prenez 2^iss 8, ça vous donne 256. C'est-à-dire les valeurs, il varient de 0 jusqu'à 255. C'estàd est la valeur maximale 255. Et alors une image euh généralement la valeur maximale d'un pixel si vous utilisez ce qu'on appelle un seul
33:10
Speaker A
channel, c'est-à-dire une monochrome, une seule couleur plutôt au niveau de gris, bah vous allez avoir la valeur maximale, c'est 200 55. Alors maintenant, si vous voulez faire la normalisation, la normalisation c'est ramener les valeurs entre 0 et 1.
33:26
Speaker A
Qu'est-ce que vous allez faire ? Bah vous divisez par max ou là vous utilisez standard. Mais ici vous n'avez pas besoin d'utiliser standard scaler parce que vous savez déjà que donc pour les pixels la valeur maximale c'est 255.
33:42
Speaker A
Donc inutile d'utiliser euh ce qu'on a fait la dernière fois parce que la dernière fois il doit chercher le maximum, il doit chercher le euh à faire ce calcul mais ici vous n'avez pas besoin. Donc si vous travaillez avec les
33:53
Speaker A
images, si vous voulez normaliser les les données, qu'est-ce que vous allez faire ? Vous allez tout simplement diviser par 255.
34:02
Speaker A
Et bien c'est la première amélioration que je vais faire ici parce que généralement si vous vous voyez donc ici j'ai lancé l'entraînement sans normalisation je vais quand même afficher vous voyez quand on fait ici fit fit il me donne le résultat
34:21
Speaker A
fistorique historique qu'est-ce qu'il pose il va mettre ces valeurs là c'estàdire pour la première époque accur l' c'est l'erreur la deè époque accur Alors, si vous voulez représenter ça graphiquement, bah vous faites ça. Donc je vais représenter les en
34:42
Speaker A
fonction des époques. Voyez donc en fonction des époques, je vais représenter ici c'est quoi ? C'est los function. Alors pour le faire, il suffit d'utiliser plot. Voyez donc 1, c'est quoi 1 ? C'est ça. C'est ce que j'ai
34:59
Speaker A
ici le résultat. l'entraînement. Alors dans History 1, je vais aller vers en fait history et je vais chercher quel le paramètre qui m'intéresse à représenter c'est c'est écurci. Alors parce que ici vous avez euh vous avez ici vous avez loss, vous
35:17
Speaker A
avez validation loss et vous avez valid valurity. Alors tout ça il vous le met dans le tableau historique. Donc si vous voulez les représenter, vous faites simplement ça. Vous utilisez plot écurecy et plot euh plot val écurcy.
35:35
Speaker A
Donc dans le même graphique, ça c'est extrêmement important. Pourquoi ? Parce que dans le même graphique, je vais représenter ça. C'est le ça c'est le déjà bon, je suis dans le celui-là le deuxème. J'ai le nombre d'époques, j'ai
35:51
Speaker A
écure ici. Alors voyez ce qui est en jaune en orange. Ici c'est quel c'est les données de de val de test validation n'est-ce pas ? Et ce qui est en bleu en en bleu, c'est trin ici. Donc je vois
36:03
Speaker A
ici, c'est-à-dire de la première époque jusqu'à la 10e. Donc ici, donc écur ici, il varie de cette valeur jusqu'à cette valeur. Alors que pour les données de test, vous avez une valeur qui qui est oscile autour de autour de des valeurs
36:18
Speaker A
d'entraînement. Ça veut dire quoi ? Ça veut dire que il y a pas de overfitting parce que nous avons dit que si vous avez par exemple pour les données d'entraînement ça vous donne un bon résultat et pour les données de test ça
36:30
Speaker A
donne des mauvaises performances. Ça veut dire que vous avez ce qu'on appelle un surapprentissage n'est-ce pas ? Ça veut dire que votre modèle n'a pas pu généraliser sur les données. Donc ici donc c'est le fait d'avoir des cours
36:43
Speaker A
dans lesquels vous représenter l'évolution di écurc pour les données de test et les données d'entraînement. Ça vous donne une idée ?
36:55
Speaker A
Est-ce qu'il y a un surapprentissage ou non ? Donc rien que quand on regarde des graphiques comme ça, on va on peut signaler vous avez est-ce que vous avez vérifié ? Il y a il y a peut-être un
37:07
Speaker A
surapprentissage, n'est-ce pas ? Alors donc ici donc je vais représenter écurc la même chose loss et validation loss. Alors tout ça c'est juste des choses qu'on a déjà vu, on a revu plusieurs fois. Euh vous mettez le les labels, les les étiquettes ici. Donc
37:23
Speaker A
ça c'est ce qu' ce qu'on fait ici. Donc j'exécute ça. Alors ça me donne Alors vous voyez ici donc à chaque fois que je fais l'entraînement, il me donne des résultats qui sont différents. Pourquoi ? parce que quand
37:41
Speaker A
il il y a de la il y a en fait des des randoms mais si j'utilise des random state je fixe le state ça me permet d'avoir les mêmes les mêmes résultats mais ici je l'ai pas fait généralement
37:53
Speaker A
pourquoi parce que vous allez pouvoir lancer l'entraînement plusieurs fois jusqu'à ce que vous trouvez un un scénario qui est le plus le plus bon et après vous dites maintenant c'est bon alors ça c'est pour les les donné si vous voulez évaluer. Donc vous
38:11
Speaker A
voyez donc ça c'est juste pour ces graphiques que vous voyez là, c'est juste pour représenter les storiques l'historique di l'apprentissage et l'historique d'apprentissage on voit bien clairement qu'il nous donne pour chaque époque variée de 0 jusqu'à 9, c'est-à-dire de 1
38:29
Speaker A
à 10. il me donne l'évolution du loss. Vous voyez ? Donc, je vois que le loss il diminue, c'est-à-dire l'erreur, la première époque. Si vous avez utilisé une seule époque au lieu de 10, vous allez avoir les performances de combien ?
38:47
Speaker A
Regardez, de même pas 40 %. à partir de l'époque de euh ça pardon ça c'est l'erreur. Alors ici la la première époque pour le les données d'entraînement c'est presque rien. Les par exemple cette époque là on est déjà
39:03
Speaker A
la deuxème époque on est à 80 et quelques mais je vois que je vois déjà quand j'augmente le nombre d'époques, je vois que la précision augmente. Ça c'est un signe que au lieu de mettre 10, je peux mettre 20 et si je mets 20, je vais
39:18
Speaker A
je vais peut-être atteindre quelque chose de d'encore mieux, n'est-ce pas ? Mais si je vois que ici par exemple, je vois qu'une fois que j'atteins 10, ça commence à descendre et ça flotte, ben je vais dire ça sert à rien de
39:29
Speaker A
d'augmenter le nombre d'époque parce que là donc je vais m'arrêter à ce niveau-là. C'est un peu le la difficulté du diplorine. Oui oui oui, c'est ça.
39:39
Speaker A
C'est-à-dire vous avez des hyperparamètres et quand vous faites vos test, il faut quand même faire pas mal de choses. Alors si vous voulez par contre au lieu de de faire ça, vous voulez calculer, faire la validation, l'évaluation, bah c'est très simple.
39:52
Speaker A
Vous utilisez votre modèle qui a déjà appris et vous faites appel à une méthode qui s'appelle évaluate. Alors pour évaluate, vous lui donnez quoi ? X trend Y et ça va vous donner la mesure, c'est-à-dire le l'évaluation. Et je fais
40:09
Speaker A
la même chose pour X test et Y test. Et après, je vais afficher ces valeurs là. Bah, je vais afficher quelques étoiles. C'est ce que vous voyez ici des des tirets comme ça. C'est des tirés multiplié par combien ? 80. C'est-à-dire je vais
40:28
Speaker A
juste quelqu'un qui voit ça, c'est juste pour afficher 80 ça. J'affiche 80 petits tirets comme ça pour juste comme ligne de séparation que ici c'est là. Mais juste après, qu'est-ce que je vais afficher ? Je vais afficher trin loss.
40:40
Speaker A
Et c'est quoi trin loss ? C'est tout simplement c'est c'est trin evaluation de zé. Pourquoi ? Parce que il vous retourne deux valeurs pour dans l'évaluation. il y a le le loss et le deè la deuxème valeur c'est écurec. Bon
40:55
Speaker A
en tout cas donc ici donc dans l'évaluation pour les données d'entraînement ça me donne une valeur de 91 % et pour les données de test ça me donne une valeur de 92 %. Donc c'est-à-dire il y a pas de overfeitting.
41:08
Speaker A
Ça il a l'air de bien comprendre un peu les choses mais je peux améliorer ces résultats. Alors maintenant si vous voulez améliorer ben qu'est-ce qu'on va faire ? On va euh j'ai déjà avant d'améliorer si vous voulez afficher encore la même la
41:24
Speaker A
même histoire di classification report. Est-ce que vous vous rappelez ? Alors classification report, il vous permet de calculer recall, il permet de calculer la précision et score et et écurc. Donc si vous voulez le faire et ben tout
41:39
Speaker A
simplement vous importez encore j'utilise encore cycet learn j'importe cborn je faisn predict donc je lui donne x test il va me faire la prédiction mais si vous affichez la prédiction ici regardez la prédiction c'est c'est important de voir pred je
42:02
Speaker A
vais d'abord exécuter ça alors Si j'affiche pred, regardez ce qui ça me donne quoi output j'ai j'ai combien de neurones ?
42:21
Speaker A
10 C'est quel c'est quel c'est quel activation que j'ai utilisé l'output sigmoid ? Ça veut dire que chaque neuron à la sortie, il me donne un nombre entre 0 et 1, n'est-ce pas ? Alors maintenant chaque neurone il donne un nombre entre
42:36
Speaker A
0 et 1. J'en ai 10. Comment je peux savoir ? Parce que le premer neurone il représente 0. Le 2e neuron, ça représente le chiffre 1. Le le 3è ça représente la 3e classe et cetera, n'est-ce pas ? Alors comment je peux
42:51
Speaker A
savoir maintenant quel est ce que j'ai input ? Est-ce que ça correspond à à 1 ou à 2 ou à 9 ? Ben, je prends le maximum et si je vais pas faire la somme, je vais juste parce que j'ai ici
43:02
Speaker A
on utilise, regardez sigmoï. Donc c'est-à-dire vous avez des valeurs entre 0 et 1. C'est que chaque si vous voulez vous lui donnez un zé input, n'est-ce pas ? Le premier neuron qui représente les zéros, il va il va dire 0,99. C'est-à-dire, il vous
43:20
Speaker A
dit que ce neuron là, il vous dit que ce nombre là, il est à 99 % c'est un 0.
43:27
Speaker A
Mais le neuron qui représente les 1 à la sortie, il va vous dire 0,05. C'est-à-dire il vous dit ce que vous m'avez donné, il est très loin d'être un un 1. C'est à peu près ça.
43:37
Speaker A
Donc moi, moi ce que je vais faire, je vais chercher le maximum, c'est-à-dire c'est l'ensemble de des neurones. Je vais prendre le le neurone qui qui est le max. Alors, c'est pour cela je fais ça, c'est-à-dire avant d'afficher classification report parce
43:54
Speaker A
que classif classification report, il faut lui donner voilà donc ici j'ai pred ça me donne regardez c'est des il y a ici donc c'est 9 10^ mo - 2 ça c'est 5 10^ - 5 et cetera mais pour faire le maximum alors
44:14
Speaker A
avec la librairie NPA je vais utiliser NPA A arg max le max diel pred donc c'est-à-dire je lui donne pred et je vais lui demander de chercher parmi les valeurs que tu as cherche-moi les l'élément qui est le maximum l'indice
44:31
Speaker A
arg max c'est c'est l'indice de l'élément le le max et donc si j'affiche ici au lieu de pred j'affiche prediction ici vous voyez ce que vous Donc au lieu de au lieu d'avoir au lieu d'avoir ici le 10
44:55
Speaker A
valeurs parce que chaque vous voyez donc pour chaque image j'ai combien de valeurs ? C'est 10. Donc au lieu d'avoir 10 valeurs finalement j'ai une une valeur. Par exemple il vous dit il vous dit par exemple pour pour la première
45:09
Speaker A
image il a il a détecté quoi ? C'est 7. La deuxième image de de du dataset c'est de ça c'est un 1. Il y a ici tr points parce qu'il y en a beaucoup parce que dans les données de test il y a
45:20
Speaker A
10000 donc ici donc head arg max ici qu'est-ce qu'il permet de déterminer c'est c'est la valeur maximale. Donc il cherche. Donc finalement moi j'ai prediction se forme de labels. Alors maintenant je peux utiliser classification report. À la fois pour utiliser
45:39
Speaker A
classification report j'utilise classification report y test. J'ai déjà et je lui donne les prédictions. Et si je fais ça, bah il me calcule la précision record et un score et ici. Voyez donc c'est c'est la moyenne. J'ai déjà expliqué ça la
45:54
Speaker A
semaine dernière donc c'est pas la peine de réexpliquer. OK, ça c'est pour les données de test. Alors si vous voulez représenter la matrice de confusion. Alors la dernière fois parce que là on utilise plus sa kitet learn, je vais utiliser tensur flow mat.
46:13
Speaker A
confusion matrix. Donc ça c'est la matrice de confusion. Alors qu'est-ce que je vais lui donner ? Y test les labels output les prédictions. C'est quoi ?
46:23
Speaker A
C'est c'est les prédictions que j'ai calculé ici. Alors ça me donne la matrice de confusion et je vais l'afficher sous forme d'une hit map. Voyez donc la la matrice de confusion. Euh les données, je vais l'afficher en nombre entiller.
46:40
Speaker A
Il y a pas de virgule. C'est en rouge et je fais ça. Et donc vous voyez donc ça c'est encore c'est un classifieur. Il y a combien de classes de 0 jusqu'à 9 ? Et après donc vous avez ici les il faut
46:52
Speaker A
surv la diagonale. Il y a combien de zéos dans le datas de test qui ont été détecté 0 ? Il y a 955. Il y a combien de 1 qui ont été détecté réellement ? 1 il y a 1110.
47:06
Speaker A
Mais par contre, il y a combien d'images qui sont des zéos mais qui ont été détectées ? Combien ? Deux.
47:14
Speaker A
C'est-à-dire c'est des erreurs, n'est-ce pas ? Donc il s'est trempé entre par exemple il y en a deux. Il y a combien de zéos qui ont été détectés comme étant des 6 ? il y en a neuf. C'est-à-dire euh
47:27
Speaker A
cette matrice de confusion, c'est cette matrice de confusion qui est utilisée pour calculer euh précision rol et écure ici. Donc on a déjà expliqué ça. Donc c'est exprès ici je répète la même chose parce que ça on l'a déjà vu avec cet learn mais pour
47:45
Speaker A
torflow il faut savoir comment le faire également. OK. Alors, nous avons dit que les résultats, ils sont pas mal mais on peut améliorer.
47:53
Speaker A
La première amélioration que vous allez faire, c'est quoi ? Faire scale data, c'est-à-dire nous avons les données sans sans faire le la normalisation. Alors maintenant, je vais faire la normalisation et je refais le même travail. Je prends strange scaled égal à
48:08
Speaker A
quoi ? Extra divisé par 255. Vous mettez point0. Alors pourquoi ? Parce que vous savez quand vous faites le les vous faites les les la division, n'est-ce pas ? Et si vous divisez par un un fich par exemple
48:30
Speaker A
257.0, c'est-à-dire pour lui c'est un c'est un nombre réel, n'est-ce pas ?0 c'est un nombre réel. Et quand c'est un nombre réel, il fait la division la vraie division. Mais parfois si vous mettez un nombre, il fait la division
48:43
Speaker A
entière. c'est il supprime les virgules et s'il supprime les virgules ça va forcer tout. Pourquoi ?
48:49
Speaker A
Parce que c'est des nombres qui sont variés entre 0 et 1 et après donc il faut faire attention, c'est un petit détail important.
48:59
Speaker A
Alors ici donc le problème ne va pas s'opposer parce que c'est assez clair mais ici donc j'ai juste mais si vous divisez par des constantes si vous divisez ou bien vous multipliez par des constantes si vous voulez des multiplier
49:10
Speaker A
par 5 vous mettez multiplier par 5 point 0 et comme ça vous êtes tranquille c'est-à-dire alors la multiplication il y a pas de problème pour la division alors quoi que dans pétant si vous voulez faire la division entière vous
49:22
Speaker A
faites ça double slash parce que si vous voulez la division entière c'est-à-dire je prends pas les virgules. Double slash, c'est-à-dire c'est une division en alors regardez donc je fais je divise par 255 et j'obtiens je fais la normalisation. Oui oui bien
49:40
Speaker A
sûr. Donc ici je n'ai pas besoin d'utiliser standard scaler et ce qu'on a fait la dernière fois parce que c'est un cas plus simple. Je sais que la valeur maximale c'est 255.
49:50
Speaker A
Et si je fais ça maintenant, je vais entraîner le modèle en utilisant donc le modèle, je vais l'entraîner avec Xin scalet Y avec les mêmes valeurs 10 époques. J'exécute et vous allez remarquer, c'est beaucoup mieux. Donc c'est-à-dire déjà la normalisation, ça
50:10
Speaker A
commence déjà avec 93. Voyez ? Et là, je suis déjà 97 avec le même paramétrage rien que la la standardisation et comme quoi la standardisation, elle est hyper important. Avant d'entraîner, il faut normaliser il faut normaliser euh vos
50:29
Speaker A
données, c'est-à-dire ramener toutes les données entre 0 et 1 comme ça vous êtes vraiment dans les bonnes conditions. Et voilà. Donc la dernière va maintenant jusqu'à 98. Et là encore, je vais afficher l'historique de la même manière. Il dit copier
50:43
Speaker A
coller. Je vais afficher euh ici donc le les valeurs. Donc ça c'est maintenant ça c'est euh écur ici pour les données d'entraînement 98 et pour les données de test. La même chose donc je vais afficher le je reprends c'est-à-dire
51:04
Speaker A
c'est ça c'est le classification report. Vous l'avez, vous avez le la matrice de confusion. Mais il faut pas oublier une chose, c'est que ici nous avons utilisé un ANN, n'est-ce pas ? C'est ANN, ça veut dire quoi ? Ben, ça veut dire que vous avez
51:23
Speaker A
utilisé ça. C'est un multilayer perceptron. Alors, ici le il a donné un bon résultat. Pourquoi ? Parce que nous avons un cas très simple.
51:36
Speaker A
Si les c'est des chiffres, il y a que de des noirs et blancs. C'est c'est pas compliqué, n'est-ce pas ? Mais si c'était vraiment une classification d'imag pour retrouver le est-ce qu'il s'agit de d'un chat ou bien d'un chien,
51:48
Speaker A
si vous faites ANN, vous aurez des mauvaises performances. Alors, malgré ça, nous on va créer le CNN, c'est-à-dire on va faire le CNN et on va remarquer. Alors, si vous voulez créer le CNN, c'est-à-dire on va maintenant utiliser le convolution Nora Network.
52:10
Speaker A
Alors le CNN elle est là ça monsieur s'il vous plaît euh quels sont les paramètres qu'on peut baser pour euh pour déterminer c'està-dire le le modèle adéquat pour alors généralement à utiliser alors la même chose, il y a pas de de for mais
52:37
Speaker A
généralement s'il s'agit d'un problème d'un problème là où il y a les images, c'est même pas la peine d'utiliser ANL, il faut utiliser CNN, ça c'est clair. Si quand il s'agit des images, CNN, ça vous donne toujours le meilleur résultat.
52:52
Speaker A
Alors ici donc j'ai commencé par un cas plus simple comme quoi c'est un cas dans ANN. D'ailleurs, on l'a fait déjà avec Seton la dernière fois, si vous rappelez, ça donnait des bons des bons résultats. Donc ici, donc voilà, c'est
53:05
Speaker A
ce qu'on veut montrer. On va montrer que avec CNN, on peut faire encore mieux. Alors, si vous voulez maintenant créer un CNN, vous allez créer donc le modèle CNN. Toujours ce séquentiel euh ici, vous voyez donc input, je vais
53:19
Speaker A
utiliser un input layer. Alors maintenant, c'est quoi la dimension ? C'est 20. Alors maintenant parce que CNL il sait que vous utilisez des images. Alors il y a combien de pixels ? Il y a une matrice de 28 x 28.
53:34
Speaker A
Mais vous savez une image une image euh il y a des images blanc et noir. Alors généralement l'image les images blanc et noir c'est ce qu'on appelle c'est c'est des images qui contient un seul channel. Ça veut dire
53:46
Speaker A
quoi ? Vous avez un seul nombre qui varie entre 0 et 255 n'est-ce pas ? Mais si vous utilisez une image couleur, si vous avez une image couleur, c'est euh rouge, vert, bleu. Pour chaque couleur, vous avez de 155. C'est-à-dire,
54:01
Speaker A
vous avez le rouge, ça représente c'est l'intensité du rouge. Il varie de 0 jusqu'à 255. Le vert, il varie de 0 jusqu'à 255 et le bleu, il varie de 0 jusqu'à 255. C'est-à-dire, si vous utilisez les images color, il y a combien de channels
54:18
Speaker A
? 3, c'est-à-dire chaque la matrice, chaque élément de la matrice contient combien de nombres ? Trois. Le premier nombre, ça représente le rouge. Le deuxème, ça représente le vert et le troisème, ça représente l'intensité du bleu. Alors ici, donc c'est pour cela
54:33
Speaker A
que vous voyez un si c'est une image blanc et noir, vous allez mettre un, n'est-ce pas ? C'est-à-dire un seul channel. Si c'est une image colore, vous allez trouver ici 3. Ça veut dire quoi ?
54:44
Speaker A
rouge, vert, bleu. Bon, généralement, c'est les composantes principales. Alors, ici, donc c'est une image monochrome. Donc je vais garder un Alors, si vous rappelez le CNN les couches, il faut commencer d'abord par les couches de convolution, n'est-ce pas
55:00
Speaker A
? Alors, je rappelle CNN. Donc, quand on dans l'image, les premiers layers, c'est quoi ? C'est des couches de convol. Voyez donc, on utilise convolution. Vous rappelez convolution c'est des pour la convolution on utilise des filtres et après on utilise reli après
55:22
Speaker A
polline convolution pline et cetera et après vous allez trouver flaten flatten et après vous avez un dance dance layer c'est-à-dire multiler layer perceptron. Alors, c'est ce qu'on va faire tout simplement. On a juste à donner à demander à Kas de faire
55:41
Speaker A
ça. Bah, c'est ce qu'on va lui demander. Vous voyez donc la première input qui contient une qui reçoivent input une matrice de 28 x 28 avec un seul channel. La deuxième couche de convolution convolution de Douche de convolution. Regardez le nombre de
56:02
Speaker A
filtres maintenant. Alors, c'est à moi de lui dire utilise-moi 50 filtres ou la 62 filtres ou la 64 filtres. Ça c'est un nombre, c'est comme si vous lui dites cette image là pour la première couche de convolution utilise 50 filtres. Donc si
56:17
Speaker A
vous voulez euh comprendre un peu les filtres, vous revenez à l'explication que j'ai donné tout à l'heure, ça vous donne une bonne une bonne idée. Ici donc je vais utiliser 32 filtres.
56:28
Speaker A
Alors si vous avez les filtres, vous avez le le la taille du filtre, il est de combien ? Regardez, kernel size, c'est 3 x 3. Donc je vais utiliser un filtre de 3 x x 3. Donc le filtre, si
56:41
Speaker A
vous rappelez ces petites jumelles à travers laquelle je vais regarder l'image comme ça, c'estci le filtre.
56:48
Speaker A
Donc je vais il va faire le le mais il va le faire pour 32 filtres. Moi c'est pas c'est c'est pas à moi de choisir les filtres. CNL, il connaît très bien dans le traitement d'image. Il y a des
56:58
Speaker A
filtres qui vont détecter des des des cheveux, il y a des filtres qui vont détecter des yeux, il y a des filtres qui vont détecter des coins, euh des arrondis. Donc les filtres, vous avez posé la question, donc les gens qui ont travaillé dans le
57:15
Speaker A
domaine du traitement d'image depuis x temps euh c'est que le c'est-à-dire la recherche à l'époque, c'était de chercher le filtre. Bah si j'ai une matrice la moin 1 2 de 1 c'est un filtre qui permet de détecter tel type
57:30
Speaker A
d'information dans l'image. C'est ça les filtres. Mais si vous revenez à l'animation que je vous ai montré tout à l'heure, ça explique vraiment le le concept de base. C'est simple mathématiquement, c'est simple, c'est fo h plusf et cetera mais à la fin vous
57:47
Speaker A
donne des choses extraordinaires. Alors donc le la taille du fil c'est 3 x 3 et quelle activation c'est reli CNN. Donc si vous utilisez CNN, les couches de convolution c'est l'activation généralement c'est rel c'est la meilleure qui donne le
58:04
Speaker A
résultat. Alors la couche suivante c'est max poline de D. Donc je vous rappelle que le max polline de D qu'est-ce qu'il fait ? Il prend une fenêtre de 2 x 2. 2 x 2. Il la pose sur quatre éléments.
58:19
Speaker A
Qu'est-ce qu'il va prendre ? Le max. Et il prend les quatre, il prend le max. 4 max et cetera. Donc finalement, on va prendre que les informations les plus pertinentes et on laisse le reste parce que les informations les plus
58:34
Speaker A
importantes, les plus grande, c'est celle qui qui qui indique le pattern, l'information. Donc voyez donc Max Pouline et je peux ajouter copiercoller copiercoller encore je fais convolution de D. Il y a combien de filtres ? 64 la taille 3 x 3 relio max polline et je
58:55
Speaker A
peux répéter autant de fois mais dans un premier temps comme je disais vous avez intérêt à utiliser une seule fois vous testez et vous regardez moi j'ai utilisé deux je suis flatten flat vous rappelez c'est quoi parce que max polline tout ça qu'est-ce
59:11
Speaker A
qu'il qu'est-ce qu'il me permet à la fin regardez l'opération convolution poline convolution poline ça me donne beaucoup de petites matrices alors Alors maintenant je dois les ramener en un seul vecteur qui a flatt donc je vais aplatir. Mais une fois que je fais flat,
59:28
Speaker A
qu'est-ce qui reste ? Dce ler d'ayer c'est une couche cachée dans laquelle je vais mettre un ensemble de neurones. Siici directement je veux passer à la sortie, je vais mettre une couche de combien de neuron ?
59:43
Speaker A
10. Et si vous voulez mettre encore des couches cachées, vous en ajoutez d'unce dence dince et cetera jusqu'à la fin.
59:51
Speaker A
Bah c'est comme ça que ça se passe. Alors ici je reviens au CNN. Voilà donc flaten. Et après vous voyez ici dence je vais utiliser combien de neuron ? 100 d'ab c'est le classifieur classifieur. Donc c'est des couches de convolution. Maintenant, je
60:16
Speaker A
vais commencer le le réseau qui permet de faire la classification. Donc, je vais utiliser une couche cachée de 100 et une couche de sortie de combien ? De 10. Alors, ça c'est relio. Je peux utiliser je peux utiliser là, c'est pas forcément relio,
60:31
Speaker A
je peux utiliser Sigmoid. Je peux utiliser ici donc je je vais utiliser Soft Max. Alors si vous soft la différence entre sigmoid et soft max c'est que sigmoid si vous utilisez sigmoid ça veut dire chaque neuron à la
60:46
Speaker A
sortie il vous donne un nombre entre 0 et 1 n'est-ce pas c'est l'intensité c'est-à-dire le l'intensité de de la classe qui est présentée à plutôt input donc c'est-à-dire si vous faites la somme la somme vous n'allez pas trouver
61:03
Speaker A
un c'est-à-dire c'est c'est-à-dire à la fin on prend le max. Mais si vous utilisez soft max, alors soft max il c'est-à-dire si vous mettez la somme chaque neurone il il va il va retenir un nombre entre 0 et 1. Mais si vous faites la somme des
61:19
Speaker A
noms, vous allez trouver 1. C'est-à-dire finalement ça représente le pourcentage, n'est-ce pas ? C'est-à-dire c'est la probabilité par rapport à l'ensemble.
61:26
Speaker A
C'est un peu près ça. C'est c'est la différence. Donc j'ai déjà euh si vous regardez les slides, vous allez trouver la fonction soft max. Il est très pratique pour le pour dans le cas où vous avez un classifieur multiclasse
61:38
Speaker A
soft max. Donc vous avez soft max et après vous avez je vais compiler maintenant.
61:43
Speaker A
Vous voyez donc c'est tout à l'heure on a vu ANN maintenant c'est CNN. Je vais compiler. Je vais utiliser l'optimizer.
61:50
Speaker A
C'est toujours Adam. Euh comme il s'agit d'une classification multiclasse, je vais utiliser la fonction d'erreur, c'est sparse categorical cross Enhropy.
61:59
Speaker A
Et je vais toujours me baser sur Ecurecy euh pour la la validation. Bah, j'exécute ça. Donc, j'ai le modèle, vous faites Samarie, ça vous donne le résumé. Vous voyez donc les couches convolution, max polline, convolution max polline flattence dence. Mais si
62:17
Speaker A
vous regardez maintenant le nombre de paramètres au total, c'est 1799. C'est-à-dire la phase d'entraînement, c'est comme si vous avez une machine dans laquelle vous avez combien de boutons ? Combien de de boutons de réglage ?
62:33
Speaker A
60 1799. Et l'entraînement, ça veut dire quoi ? Vous allez régler tout si vous vous trouvez le bon réglage de tous ces boutons là pour que votre machine puisse prédire le et c'est qu'est-ce qui fait ça ?
62:47
Speaker A
C'est Adam, c'est stock. Ici, vous avez Adam, vous avez SGD. Bon, ça c'est le les algorithmes d'optimisation, c'est la rétroagation de de l'erreur. Bon, ça c'est un algorithme. Alors, vous n'êtes pas censé aller vers les petits détails, mais bon,
63:06
Speaker A
c'est bien de savoir. Et voilà. Donc je vais faire le je vais ici. Donc, si vous faites le avant de faire l'entraînement, je sais que je dois faire la normalisation.
63:17
Speaker A
Donc, je fais la normalisation, je divise par 255 et je fais fit. Alors si je fais fit, vous allez remarquer déjà la première éération déjà les réseaux de neuron CNN, ça prend plus de temps par rapport au NN. Vous
63:33
Speaker A
remarquez déjà ? Et la première itération, je suis déjà à 98 % euh 88 écurc. La deuxème, regardez, je suis à 80 la deuxème époque, je suis déjà donc c'est-à-dire ça prouve déjà que pour les images, les CNN, c'est toujours beaucoup
63:52
Speaker A
mieux que les les les ANN pour les images. Alors, je suis à 99 %, c'est-à-dire maintenant presque je suis en train de créer un modèle qui se trompe pas. Alors bien sûr, le 100 % n'existe pas l'intelligence artificielle
64:08
Speaker A
parce que vous allez toujours, il va se tromper de temps en temps sur quelques images. C'est normal parce qu'il y a des images même à vos yeux, vous n'allez pas faire la différence entre 17 et un 1.
64:18
Speaker A
Vous-même vous pouvez vous tromper, n'est-ce pas ? Et a c'est normal dans le dataset s'il y a des choses comme ça, il peut se tromper. Donc mais le plus important si vous êtes à 99 % c'est-à-dire c'est c'est très
64:30
Speaker A
bon. Est-ce que c'est clair jusqu'à présent ? C'est parfait. Alors donc voilà. Donc alors pour le reste on va faire la même chose. Voyez donc une fois qu'il va terminer on va faire c'est c'est l'histoire qui se répète. Donc je prends
64:47
Speaker A
histor history 3. C'est ça. C'est l'historique que j'ai que j'obtiens après l'entraînement. Alors je suis à l'époque numéro 8. Bon, je vais attendre quand même parce que pour être sûr que j'ai bien le les bons les bons trucs. Alors ici, je vous rappelle juste
65:08
Speaker A
est-ce que j'utilise le GPU ? Non. Mais si j'utilise GPU le temps que vous voyez là, c'est c'est presque à l'instant. Pourquoi ? Parce que ici c'est des c'est de l'alè, c'est des calculs matriciels. Chaque époque, c'est beaucoup de calcul matriciel. Mais si
65:24
Speaker A
j'ai un GPO, au lieu d'attendre tout ce tempslà, bah ça va se faire rapidement.
65:28
Speaker A
Alors maintenant, j'ai je vais afficher encore l'évolution de loss et de donc dans ce ce cas-là donc je vois le loss et je vois le curie. L'essentiel c'est que pour les les tests ici j'ai je fais l'évaluation j'exécute
65:44
Speaker A
là. Alors qu'est-ce que j'ai ? J'ai je vais avoir test pour les test l'évaluation. Je vais faire également classification report et je vais faire confusion confusion matrix.
65:56
Speaker A
C'est-à-dire, je fais tout ça en un seul coup. Donc je vois les performances pour les données de test. Regardez, je suis à 99 % pour le l'entraînement. Pour les données de test, je suis à 98 %. Alors ce qui ce qui est un très bon
66:14
Speaker A
score. Alors ici donc ça c'est la la matrice de confusion et ça c'est plutôt ça c'est classification report. Ça c'est la matrice de confusion. Alors, je vois ici encore si je compare cette ligne la diagonale en rouge que j'ai ici
66:31
Speaker A
par exemple ici pour le le nombre 2. ici j'ai 1024, là j'ai 1133 là. Regardez ici, j'ai 1100 25.
66:44
Speaker A
C'est-à-dire maintenant CNN euh il va réduire les erreurs que qu'a fait le ANN parce que ANN il s'est trempé sur un certain nombre de choses ici. Donc c'est c'est à peu près l'idée. Donc ça c'est bien de pour vous de remarquer les
66:58
Speaker A
choses et d'écrire des commentaires et cetera. C'est voilà. Alors maintenant à la fin bon j'ai mon modèle il est entraîné, je suis satisfait. Euh vous pouvez faire des articles et cetera avec ça. Bon, c'est-à-dire une fois que vous avez un
67:12
Speaker A
datasat vos images de votre domaine, si vous faites la même démarche, vraiment c'est la même démarche. Si vous avez des bons scores, vous rédigez vos articles, c'est des publications de de grande valeur parce que vous démontrez que vous
67:24
Speaker A
faites mieux que dans ce domaine que que les autres. Et si vous voyez que les performances ne sont pas bonnes, et ben qu'est-ce que vous allez faire ? Vous allez passer du temps parce que vous allez ajouter encore, vous allez dire
67:37
Speaker A
peut-être avec deux couches de convolution, ce n'est pas suffisant. Je vais ajouter une couche de convolution. Allez, copiercoller une 3è, une 4è, je j'exécute jusqu'à ce que je trouve un score qui est intéressant. Ici, j'ai utilisé 100 neurones, je vais utiliser
67:55
Speaker A
200, je vais utiliser 90. Et comme quoi les les doctorants qui font le dépor docteur alors vraiment ils s'en sortent très bien, il y a pas de problème. Mais sauf que c'est que il faut être il faut votre cerveau soit en
68:13
Speaker A
parallèle. C'est-à-dire, vous lancez le calcul et vous faites autre chose. C'est-à-dire, je lance les calculs, je lance le test et moi je suis en train de rédiger un article ou là des choses comme ça. Parce que si vous attendez les
68:24
Speaker A
résultats et cetera, vous allez perdre beaucoup de beaucoup de temps. C'est un peu ça. Voilà.
68:31
Speaker A
Alors, mais il y a une chose qui est très importante, c'est que si les résultats ne sont pas bons, comme je disais, vous ajoutez les les neurones, vous vous dites le filtre, je vais utiliser des filtres de 4 x 4 au lieu de 3 x 3, mais
68:44
Speaker A
c'est énorme tout ça. C'est ce qu'on appelle des hyperparamètres. C'est quoi les les hyperparamètres ? C'est des paramètres que ne vous pouvez déterminer que par de manière empirique. Empiriérique, c'est-à-dire des essais.
68:59
Speaker A
Il y a pas mathématiquement quelque chose qui vous dit, c'est-à-dire un filtre de 4 x 4, non, c'est vraiment empirique.
69:08
Speaker A
C'est-à-dire c'est de l'expérimental. Vous faites des tests plusieurs fois et celui qui va trouver pour un problème donné les bons hyperparamètres, c'est que c'est lui qui détient le modèle le plus puissant dans ce domaine. Donc voilà. Alors maintenant,
69:25
Speaker A
il y a un petit détail qui est important. Si généralement vous avez un overfitting, comment vous pouvez savoir est-ce que vous avez un overfitting ou pas ? Si vous voyez le les les le écurie, c'est par exemple pour les données d'entraînement, c'est
69:42
Speaker A
0,99 et pour les données de test, vous avez 70 %. Donc il y a un écart entre les données d'entraînement et les données de test. Ça veut dire quoi ?
69:50
Speaker A
Vous avez ce qu'on appelle un overfitting, un surapprentissage. Ça veut dire quoi un surapprentissage ?
69:55
Speaker A
c'est que le réseau s concentré sur les données d'entraînement pour trouver soi-disant la formule mathématique qui permet de lier les données d'entraînement. Mais quand on va le tester avec les données qu' n'a jamais vu, on voit qu'il n'est pas bon. Alors,
70:10
Speaker A
si vous travaillez avec torfow, euh en fait, il y a un article, je vais vous laisser, c'est en 2000 je crois 14 qui a qui est qui a publié un article qui concerne ce qu'on appelle le dropout. Vous le voyez, je le
70:24
Speaker A
mets en commentaire. Alors, drop out, c'est un layer, c'est un type de de couche qui permet d'éviter le surapprentissage. C'est-à-dire, si vous voyez que vous tombez dans des problèmes de surapprentissage, qu'est-ce que vous c'est quoi la solution ? C'est d'aller
70:40
Speaker A
dans votre neuron, vous allez insérer un layer de type dropout. Alors, qu'est-ce qu'il fait dropout ? Drop out. Si vous mettez par exemple 0,2, ça veut dire que ce c'est 2 %. Ça veut dire c'est comme si vous lui dites à chaque passe quand
70:58
Speaker A
on on va mettre à jour, on va mettre à jour les les poids des neurones, qu'est-ce qu'il fait ? Et bien, il va ignorer quelques neurones. C'est-à-dire tous les neurones vont faire ce travail, sauf quelques neurones qui vont qui vont
71:15
Speaker A
pas qui vont rien faire. C'est-à-dire, c'est comme si votre cerveau, tous les neurons fonctionnent. Il y a des fonctions, il y a des neurons qui vont pas fonctionner. Et avec cette technique là, on va aider le modèle à mieux
71:28
Speaker A
généraliser, à à trouver une bonne généralisation. Et voilà. Donc c'est c'est l'intelligence humaine. Mais l'intelligence enfin l'intelligence humaine, celui qui a trouvé ce ce modèle qui marche très bien. C'est pour cela d'ailleurs que ça a été intégré dans les framework. Il y a
71:43
Speaker A
un layer qui s'appelle Dropout. Alors si vous cherchez Dropout, vous allez trouver le je vous laisserai le lien de l'article euh qui qui a été publié. Donc vous regardez comment il a démontré que comment il a comment on doit spécifier
71:59
Speaker A
des neurones à alors c'est pas de neurone, vous mettez un pourcentage. Si vous mettez 01, c'est-à-dire vous lui dites pour chaque pour chaque pour chaque époque euh tu prends si tu as par exemple 100 neurones et et il y a 10
72:12
Speaker A
neurones aléatoirement parmi les 10, il va choisir aléatoire au lieu de prendre en entrée la vraie entrée, il leur donne un zéro. C'estàd il force le calcul.
72:23
Speaker A
C'est un peu bizarre. C'est c'est forcer les calculs pour empêcher parce que je l'overfeit overfitting.
72:32
Speaker A
Rappelez-vous l'exercice di exercices avec solution, n'est-ce pas ? Supposons j'ai 15 exercices avec solution. Alors les données d'entraînement j'ai montré à à l'étudiant que 10.
72:46
Speaker A
Donc je lui montré le premier exercice solution exercice solution que les 10 et les l'étudiant tellement il a revu les 10 exercice avec solution plusieurs fois et après son cerveau il s il s'est un peu il a il a beaucoup surappris c'est
73:01
Speaker A
des surapprentissages mais quand je lui donne un exercice qu'il n'a jamais vu, il n'arrive pas le alors les autres donc c'està-dire il a surappris surapprentissement c'est ça le l'idée principale.
73:16
Speaker A
Bon voilà. Alors s'il vous plaît alors ici le dernier point c'est justement que ce que je dis alors maintenant où est-ce que je vais le mettre le début ou là après ça c'est toujours je le mets à la fin avant
73:33
Speaker A
avant d'un slayer et après je le mets après et je teste jusqu'à ce que je trouve vraiment ce que je veux. Donc ça c'est les techniques les plus courantes.
73:42
Speaker A
Alors après ça alors ici donc vous avez remarqué on n' pas de surapprentissage. C'est pour ce que c'est pour cela que je l' mets je l'ai laissé en commentaire donc je fais pas de drop out. Bon à la fin une fois juste une
73:55
Speaker A
fois que j'ai j'ai entraîné je vais tester avec un exemple. Et pour le tester avec un exemple j'ai téléchargé une image, vous l'avez dans euh simple.
74:04
Speaker A
Oh, c'est euh c'est pas celle-là, c'est 3. Alors, j'ai pris une image téléchargée, c'est un 3. Et je voulais je voudrais voir est-ce qu'il est capable de détecter c'est un c'est un 3. Alors, qu'est-ce que je vais faire ? Et bien,
74:18
Speaker A
je vais d'abord j'ai il y a une librairie qui est très importante qui s'appelle Open CV. Open CV, c'est très connu dans le domaine des traitement d'image. Donc, vous l'installez Open CV Python, ça vous permet de de manipuler
74:29
Speaker A
facilement les images. Vous importez CV2. Alors donc c'est déjà installé ici et je vais lire l'image 3.
74:38
Speaker A
PNG je vais la lire avec Open CV read image read je l'ai là je vais l'afficher image show m'affiche juste ce que j'ai ici.
74:51
Speaker A
OK après je vais maintenant la la redimensionner. Pourquoi ? Parce que si je regarde l'image, je vais trouver c'est une image qui a beaucoup de pixels, c'est très grande. Mais moi mon réseau, je dois lui donner l'image 28 fois 28. Donc je dois
75:07
Speaker A
faire un resize de l'image pour la ramener à la taille qui est acceptée par mon réseau parce que mon réseau input c'est 28 x 28. Bah c'est ce que je fais ici. TF tensurfow image resize. Vous voyez donc dans tfow vous avez beaucoup
75:23
Speaker A
de fonctions qui permettent de faire ce travail. Je lui donne l'image img, c'est celle-là. Et je vais lui demander de faire un resize de combien ? 28 x 28. Et j'ai l'image resized, elle est là. Je vais la convertir euh en au niveau de
75:40
Speaker A
gris parce que quand j'ai lu cette image, même si vous voyez que c'est des blancs noirs, d'accord ? Et lui, il l'a lu comme étant une mche couleur, c'est-à-dire chaque pixel, il a gardé la proportion en bleu, en rouge et en vert.
75:53
Speaker A
Donc je vais lui demander de la convertir encore en niveau degré. C'est ce que je fais ici. TF image RGB RGB, c'est read green blue tout gr scale, c'est au niveau de gris. Donc je lui donne l'image resize, ça me donne
76:12
Speaker A
euh l'image au niveau de gris. Si j'affiche l'image maintenant, ça c'est le 3 mais cette fois-ci en niveau degré.
76:19
Speaker A
Et maintenant je vais si vous faites shape, vous voyez donc je vois bien que c'est mon image maintenant elle est 28 x 28 x 1 channel alors que avant c'est c'était 3. D'ailleurs, je l'ai pas affiché ici mais vous pouvez
76:32
Speaker A
montrer ici si vous faites G. Alors voyez donc au début l'image il est 229 x 220 x combien de channel c'est c'est 3. C'est pour cela que ici donc j'ai fait resize et j'ai fait en même temps RGB
77:01
Speaker A
scale. Donc j'ai maintenant l'image il est prête donc je peux la donner au modèle. Pour cela, je fais tout simplement CNN predict.
77:08
Speaker A
Donc je lui donne l'image. Euh maintenant cette image là, je vais la la redimensionner avec Np que ça soit un vecteur c'est-à-dire un vecteur. Donc je vais utiliser expand dim. Donc ça c'est c'estàdire cette image là que je vais diviser
77:27
Speaker A
encore par 255 parce que je dois faire la normalisation. Et bien je lui donne tout simplement l'image. OK.
77:38
Speaker A
Et qu'est-ce qu'il va me retourner ? Prédict. Alors, j'affiche maintenant si j'affiche prédictement ici, je mets ça en commentaire et comme ça, vous savez qu'est-ce que le réseau me donne à la fin. Si j'affiche que predict euh print predicted, vous voyez donc ça me
78:04
Speaker A
donne il y a combien de neuron à la sortie ? a 10. Bon, chaque neuron, il me donne une valeur euh entre 0 et 1. Si vous faites la somme de ces valeurs là, vous allez trouver 1 parce que nous
78:14
Speaker A
avons utiliser soft max. Mais ici, donc je vais prendre je vais afficher quoi ?
78:19
Speaker A
NP. AR max, c'està-dire le maximum de ces ces valeurs. Quel est le numéro l'indice de la valeur maximale ?
78:30
Speaker A
Alors, je mets ça en commentaire. Et ou donc ça me donne c'est c'est 3 là max là c'est différent soft max c'est une fonction d'activation floron qui permet de c'est les autres mais arg max vous lui donnez un vecteur de données et
78:55
Speaker A
qu'est-ce qu'il fait il va parcourir le vecteur il va regarder la valeur maximale ch l'indice di là son indice 10 et vous voyez donc il il m'indique qu'il s'agit bien d'un d'un 3. C'est-à-dire que cette valeur là il a il l'a prédit
79:08
Speaker A
comme étant un C'est logique, on sait très bien qu'il il doit être bon. Pourquoi ? C'est pas ça ce qui c'est pas cet exemple là qui va nous dire qu'on est bon.
79:17
Speaker A
Ce qui ce qui ce qui va nous dire qu'on est bon, c'est ça c'est zéro parce que je sais déjà que c'est c'est je sais déjà que si je lui donne des images comme ça, il sait il les
79:28
Speaker A
connaît. Donc si vous voulez, c'est des cas. Il reste quand même de deux dernières étapes parce que j'aurais pas le temps vraiment de revenir sur ça. C'est maintenant on a entraîné le modèle et vous savez que pour entraîner
79:40
Speaker A
un modèle ça prend du temps. Alors c'est vraiment c'est rien. Alors il y a des modèles, vous les lancez, vous allez attendre 2 jours. Votre machine il calcule pendant 2 jours pour pour qu'il apprenne. Une fois qu'il aura appris, ça
79:53
Speaker A
veut dire il a déterminé les paramètres. Supposant vous allez éteindre votre machine et quand vous allez revenir vous allez refaire l'apprentissage.
80:02
Speaker A
Donc maintenant modèle il faut l'enregistrer dans un fichier. C'est une fois que votre modèle a a appris le cerveau. Une fois qu'il a appris, il faut le garder. Il faut pas le perdre.
80:14
Speaker A
Et ben comment enregistrer un modèle ? C'est très simple. Vous voyez ici il suffit d'utiliser le le modèle. Donc nous avons deux modèles ici ANN et CNN.
80:25
Speaker A
save, je vais l'enregistrer dans un dossier. Alors ici donc je vais importer OS donc ça fait partie de Python. Alors qu'est-ce qu'il permet de faire ? Je lui demande d'aller vers le pat, il va joindre le dossier model. Vous voyez donc ici dans
80:41
Speaker A
mon projet, il y a un dossier qui s'appelle modelè. C'est comme si je vais lui demander va vers un dossier qui s'appelle modèle et va m'enregistrer le modèle en utilisant h le fichier. Donc le fichier, je vais l'appeler ANN image
80:54
Speaker A
classifier V1 H5. Donc ça c'est l'extension H5 mais vous pouvez donner ce que vous voulez.
81:01
Speaker A
C'est le format utilisé par tensor flow et c'est ça le cerveau. Donc finalement regardez le fichier, il est là.
81:11
Speaker A
Alors si si vous si vous regardez la taille du fichier, vous allez trouver quelques még. Donc si finalement qu'est-ce qui qu'est-ce qui est le plus important dans ce fichier là ? C'est les poids des neurones. Les poids donc le nombre de paramètres quand
81:25
Speaker A
il a entraîné ça il a trouvé les paramètres. Maintenant les paramètres qui est le cerveau, bah on va l'enregistrer. Donc notre modèle si vous voulez le donner à quelqu'un, vous lui dites j'ai un modèle, je l'ai entraîner il sait faire beaucoup de choses ben
81:37
Speaker A
vous lui donnez ce fichier. Donc c'està-dire finalement votre output final en tant que data scientist c'est quoi ? C'est ça.
81:48
Speaker A
C'est ce fichier là. Donc c'est le modèle entraîné. Alors maintenant supposons je l'ai donné à quelqu'un et moi je voudrais utiliser ce modèle. Qu'est-ce que je vais faire ? Je vais le charger. Oui, si vous voulez charger un
82:02
Speaker A
modèle, bah vous il suffit d'importer une livre et une méthode qui s'appelle load model. Vous utilisez load modèle, vous donnez le chemin où se trouve votre modèle et vous avez le modèle qui est qui est le cerveau qui est déjà après
82:14
Speaker A
des choses. Ici je le charge et ben je vais faire la prédiction. Je fais la prédiction des mêmes exemples de tout à l'heure. Je fais la prédiction, j'affiche et j'ai mon résultat. Donc ici, regardez donc ici, c'est-à-dire qu'est-ce qui va exploiter
82:32
Speaker A
ça ? C'est maintenant, c'est le engineer, c'est-à-dire le data scientist, il crée, il passe beaucoup de temps à faire ses investigations jusqu'à ce qu'il entraîne un modèle et après il va présenter les métriques qui prouvent comme quoi le modèle il est bon. Et
82:47
Speaker A
maintenant, si a il y a quelqu'un qui va le prendre, maintenant il faut qu'on le mette dans une application avec une interface. On va essayer de de de créer des applications qui permettent de l'exploiter. Alors maintenant, celui qui
83:00
Speaker A
va exploiter le modèle, c'est un fichier qu'il va lire, il le charge, il va saisir les données user interface, il va faire appel à la méthode predict, il lui donne les données et le modèle, il va faire la la prédiction. Alors
83:13
Speaker A
maintenant, ce qui est bien c'est que la prédiction regardez c'est instantané. Donc je je vais charger le modèle. Je fais ça. Alors, je l'ai pas enregistré parce que c'est pas le j'enregistre. Alors, pourquoi il l'a pas fait ? Parce que je n'ai pas exécuté
83:28
Speaker A
aussi ça. Il a enregistré, c'est rapide, le chargement, c'est rapide, la prédiction c'est rapide. C'est instantané. Mais ce qui coûte trop cher, c'est l'entraînement. Fit, l'entraînement. H l'entraînement ça prend beaucoup de beaucoup de temps.
83:45
Speaker A
Alors chat GPT il a été entraîné et on vous a dit com pour combien de temps ?
83:52
Speaker A
Alors si vous cherchez c'est c'est 3 mois 4 mois de calcul mais pas avec un seul GPO c'est avec des milliers des milliers de GPO des psyques. Vous avez les ch si vous cherchez vous allez trouver mais là
84:07
Speaker A
maintenant la la notre prochaine étape c'est li générative. Alors dans l'IA générative, bah vous n'aurez à entraîner rien parce que vous vous allez juste exploiter finalement les modèles et les lèves qui existe déjà. Donc parce que vous ne pouvez pas faire mieux qu'un GPT
84:25
Speaker A
for ou la dipsi et cetera dans des domaines particuliers. Donc on va essayer de voir ce qu'on appelle le prompt engineering. Comment maintenant créer des promptes, comment tirer profit de des Ll pour des applications vraiment pratiques. Donc ça c'est jusque là.
84:42
Speaker A
Ça c'est des choses qu'on savait faire même 2012 tel 2020. Si vous cherchez les gens qui font de l'IA entre 2012 et 2020 2021 mais 2021 dès que les les modèles les LLM sortent la majorité des entreprises maintenant ils vont passer
85:03
Speaker A
du temps à faire ça. Pourquoi ? Ils vont d'abord commencer par lesm qui sont qui font déjà beaucoup de choses qui sont très intéressantes. Si ça donne des bons résultats, ça sert à rien de temps de passer du temps. Donc après, vous allez
85:15
Speaker A
vous focaliser sur le c'est-à-dire le prompt, comment évaluer le prompt, comment faire un certain nombre de choses, mais ça c'est l'objectif de la partie générative et prompt engineering.
85:26
Speaker A
Donc ça c'est pour le l'élèm. Alors comme exercice vous avez un mé exercice mais en fait c'est un use case que vous avez. Je vous ai créé un un autre notebook.
85:37
Speaker A
W Alors, ce notebook euh par contre, il va faire il va il va faire la classification des sentiments sur des images. Si c'est des images couleur.
85:52
Speaker A
Alors, il y a une chose que vous allez faire au début. Vous allez créer un un dataset.
85:59
Speaker A
Regardez, vous allez vers vous posez la question, vous posez la question à Google, vous lui dites par exemple euh happy people images. Regardez, je veux construire un dataset et après il vous donne des images des personnes qui sont contentes.
86:22
Speaker A
Voyez les images. Maintenant, les images, je voudrais les télécharger. Chaque image et des tails qui sont différentes. Vous savez, si vous voulez télécharger les images de toute une page, il y a une extension euh sur Google Chrome euh qui s'appelle ici load
86:39
Speaker A
all images. Vous savez juste les extensions. Vous avez les extensions ici afficher, gérer les extensions, afficher et cetera. Alors si vous cherchez les extensions, vous allez trouver l'extension di le load all images a l'extension vous l'installez.
87:11
Speaker A
Une fois que vous l'installez, vous avez ça. Ben il suffit de cliquer sur ça et vous dites télécharger. Ben il va vous il va vous piquer alors toutes les images. Alors parce que ici des centaines d'images il va les télécharger dans un fichier. OK
87:26
Speaker A
donc ça va vous donner un fichier point zip qui contient déjà ces images. OK la première classe. OK après vous faites par exemple sad people images c'est-à-dire les les personnes qui sont pas contentes.
87:45
Speaker A
afficher toutes les images encore. Regarde, vous faites encore télécharger. Donc finalement vous avez un dataset de combien de combien de classes ? Vous avez un dossier qui contient les images des gens qui sont contents et un dossier qui contient des images des gens qui
88:03
Speaker A
sont pas contents. Après vous allez donc les images des images qu'il faut supprimer et cetera ben au final vous allez trouver il y a un ce dataset que vous avez ici data vous allez trouver il y a un
88:17
Speaker A
dossier di happy les images j'ai fait la même procédure et après vous allez trouver un dossier seed il y a des images et après ce ce notebook qu'est-ce qu'il fait ? Bah, il fait la même chose. Alors déjà, bon, on
88:36
Speaker A
a les mêmes livrairies, c'est Open CV et cetera. Vous avez la liste des dépendances, ça je pas montrer. Vous avez Tensorf Flow, vous avez les GPU, ça je l'ai déjà montré. Là par contre, il y a un pré-traitement. Euh, il se peut que
88:52
Speaker A
dans vos vos images dans le dossier, il se peut qu'il y a des images de de format SVG. Il y a d'autres formats d'images. Moi, je voudrais garder que les les images de type JPEG, JPG, BMP et PNG. Vous avez un script Python ici.
89:07
Speaker A
Qu'est-ce qu'il fait ? Il va parcourir ces dossierslà. Dès qu'il trouve des images dans l'extension est différente, il va les supprimer. Bon, ça ça permet d'éliminer les images SVG parce que ils vont vous bloquer par la suite. Une fois
89:22
Speaker A
que vous faites ça, vous allez charger les images dans un dataset. Alors maintenant, il faut savoir une chose parce que tout à l'heure c'était simple, on a téléchargé un dataset qui est déjà prêt, n'est-ce pas ? Alors maintenant, vous avez un dossier qui
89:34
Speaker A
contient des images et un autre dossier qui contient les images. Et si vous voulez charger un dataset, il suffit d'utiliser torflow kas utiles image dataset from regardez from directory là c'est très utile. Pourquoi ? Parce que qu'est-ce qu'il fait l'opération ? il va
89:52
Speaker A
aller vers un dossier qui s'appelle data. Qu'est-ce qu'il va trouver ? Il va trouver des sacs pour lui chaque sautsier c'est une classe. Donc automatiquement il va créer un dataset qui contient deux classes. La première classe c'est happ de classe c'est se Alors ici
90:10
Speaker A
donc je fais H shuffle euh false parce que shuffle c'est-à-dire euh shuffle il va mélanger de manière aléatoire.
90:20
Speaker A
Je récupère les données une fois que vous chargez les données. Alors maintenant, bon, ça c'est juste les points d'interro si vous voulez voir euh les paramètres par défaut. Et après, si vous voulez afficher ici, donc je vais afficher les cinq premières images.
90:34
Speaker A
Voyez donc comme quoi euh c'est bon. Et après vous allez normaliser les données. On a fait la même technique, vous allez diviser par 255. On va diviser maintenant les les datas. Je vais prendre 70 % pour les données d'entraînement, 02, pour les la
90:54
Speaker A
validation et 1 % pour les les tests. Je crée le modèle. Alors, le modèle, c'est le même que tout à l'heure. Vous voyez donc, il y a input, convolution max pool, convolution max pool convolution max pool flat.
91:14
Speaker A
C'est on est toujours dans la même logique. Euh je vais compiler avec Adam Accuracy. Voilà le modèle entraîner le modèle fit le nombre d'poxy 20. Alors vous allez remarquer que cette première passe il va basculer. J'ai quand même
91:31
Speaker A
des choses de 90 % mais j'ai un overfitting. Regardez pour pour le cas de validation j'ai 64 %. Mais vous quand vous allez exécuter, vous allez trouver des résultats et après vous vous ajoutez des couches, vous ajoutez les neurones.
91:47
Speaker A
Euh bref, donc ça vous donne voilà les performances. J'ai valide le modèle avec précision recol et ben accur, je fais la prédiction comme tout à l'heure, je prends une image quelconque. Cette fois-ci, je prends cette personnel et je voudrais savoir
92:11
Speaker A
est-ce qu'il est content, il est pas content. Ah, normalement si même si vous le montrez à un chat, il va vous dire il est content.
92:21
Speaker A
Mais il y a des cas, c'est un peu difficile. Alors, je prends simple, je charge l'image et ben je fais la même chose. Je fais resize parce que je dois lui donner la la bonne dimension. Et bah, il me don il me dit
92:35
Speaker A
ici à la fin, il me dit c'est happy. Voilà. Enregistrer le modèle dans un fichier, charger le modèle, faire la prédiction. J'ai refait le même travail mais cette fois-ci avec un cas là, vous cherchez vous-même vos vos images. Alors
92:50
Speaker A
maintenant chacun a un dataset, vous le prenez, vous l'appliquez et ça va vous donner quelque chose. Peut-être si vous êtes dans le domaine de la biologie, peut-être vous prenez un dataset là où il y a les virus et cetera et cetera.
93:02
Speaker A
Euh les gens qui travaillent dans le domaine euh je sais pas chacun vous cherchez des datasets dans votre domaine de recherche dans lequel vous faites la thèse, vous appliquez copiercoller, vous avez ça, vous publiez des articles et vous
93:20
Speaker A
vous les ajoutez comme des contributions à votre à votre thèse et avoir même si l'intelligence artificielle ne fait pas partie des objectifs de votre thèse, mais croyez-moi Moi le dernier chapitre le dernier chapitre de toutes les thèes de toutes les thèses du
93:38
Speaker A
monde l'intelligence artificielle j'ai travaillé les techniques di 1980 1990 et cetera j'arrive à la fin mais on va vous dire est-ce que vous avez testé avec les les algorithmes d'intelligence artificielle ? Vous lui dites "Ah, mais il faut
93:55
Speaker A
arriver à votre dernier chapitre rien que à faire des des investigations, c'est-à-dire de regarder les perspective." Donc vous vous donnez des pistes, vous dites "Je vais utiliser l'IA générative un CNN ou là un AANN ou des choses comme ça." Et c'est pour cela
94:10
Speaker A
d'ailleurs on vous fait ces formations c'est pour que ça vous aide à apporter des contributions pour vos thèses. Alors après bon, ça demande déjà de faire des activités là-dessus.
94:24
Speaker A
Voilà, donc ça a été un peu plus dur aujourd'hui. Euh on va s'arrêter à ce niveau-là. Euh voilà, bon courage. Alors si vous n'avez pas de questions, on va s'arrêter à ce niveaul. On est déjà 18h20, c'est parce
94:38
Speaker A
que là, il faut que je termine cette partie là. Donc on pas le choix. Alors s'il vous plaît, vous avez le la présence, vous signez votre présent. Si vous voyez que votre nom n'est pas là, vous vous l'ajoutez à la fin.
94:55
Speaker A
Alors pour les autres, vous marquez votre présence et vous pouvez quitter et bonne journée.
Topics:deep learningTensorFlowKerasEMNISTréseau de neuronesGPUvisualisation d'imagesnormalisationOpenCVIA générative

Frequently Asked Questions

Quel dataset est utilisé dans cette vidéo pour l'entraînement du modèle ?

Le dataset utilisé est EMNIST, un ensemble d'images de chiffres manuscrits déjà divisé en données d'entraînement et de test, accessible via Keras.

Comment visualiser les images du dataset dans le notebook ?

On utilise Matplotlib avec la fonction plt.gray() pour afficher les images en niveaux de gris, puis une boucle pour afficher plusieurs images côte à côte avec leurs labels.

Pourquoi est-il important de configurer les GPU dans TensorFlow ?

La configuration des GPU permet à TensorFlow d'utiliser efficacement la mémoire et la puissance de calcul des GPU disponibles, accélérant ainsi l'entraînement des modèles de deep learning.

Get More with the Söz AI App

Transcribe recordings, audio files, and YouTube videos — with AI summaries, speaker detection, and unlimited transcriptions.

Or transcribe another YouTube video here →