‫Comme cet ensemble est excitant, nous avons encore beaucoup de chemin à parcourir pour obtenir nos images et nos positions, nos étiquettes
‫dans les temps, préparer notre journée à choisir un modèle sur le concentrateur de flux tensoriel, créer des rappels de modèles.
‫Nous sommes enfin au stade où nous sommes prêts à former notre premier modèle d'apprentissage en profondeur, créons donc
‫une formation de cap, un modèle.
‫Maintenant, nous allons mettre un sous-ensemble de données, car si vous vous souvenez du moment où
‫nous avons divisé nos données, nous n'allons commencer à nous entraîner que sur 1000 images, car pourquoi voulons-nous faire cela ?
‫Alors allons-y, notre premier modèle ne va s'entraîner que sur mille images pour s'assurer que tout
‫fonctionne.
‫C'est donc ce que nous essayons de faire.
‫Nous essayons de minimiser notre temps entre les expériences.
‫Nous commençons donc par commencer sur un sous-ensemble de données pour nous assurer que tout ce code, je veux dire, pourrait se casser.
‫À droite.
‫Donc on veut s'assurer que ça marche avant de passer beaucoup de temps à s'entraîner sur 10000 images, parce
‫que s'entraîner sur mille images va aller beaucoup plus vite que 10000 images.
‫Et vous pouvez imaginer qu'il en va de même si vous l'augmentez à 100 000 images ou dans le cas d'une image nette
‫de quatorze virgule deux millions.
‫Il y a donc une autre variable que nous devons définir avant de pouvoir commencer à entraîner un modèle, et c'est
‫le nombre d'époques.
‫Ainsi, le nombre d'époques correspond au nombre de passages de données que nous aimerions que notre modèle effectue.
‫Et une passe est, vous pouvez l'imaginer, équivalente à notre modèle, essayant de trouver des motifs dans chaque image de chien et
‫de voir quels motifs se rapportent à chaque étiquette.
‫Passons aux époques ici maintenant.
‫Égal à cent et nous allons faire quelque chose de cool ici, nous allons
‫créer un petit curseur comme nous l'avons fait avant Harran.
‫Et puis nous allons créer un curseur de type, puis les hommes seront 10, les Mac peuvent être 100, puis le pas peut
‫être 10.
‫Regarde ça.
‫À quel point cela est cool?
‫Donc, si nous voulions faire 10 époques, nous pourrions en faire 10.
‫Mais nous allons nous en tenir à 100 parce que nous avons notre rappel d'arrêt précoce et nous allons voir tout
‫cela en action dans une seconde.
‫Mais essentiellement, ce qu'une passe d'entraînement va faire si nous revenons à notre Keano, une époque
‫donnerait à notre modèle une seule chance d'examiner toutes les données d'entraînement, puis de les valider à partir de leur.
‫100 époques, nous donnons donc à notre modèle jusqu'à 100 chances de parcourir l'ensemble de données d'apprentissage et de
‫déterminer les modèles.
‫Donc ça va à ce qui passe, ça va passer par ces couches.
‫Nous allons transmettre nos images d'entraînement à notre modèle.
‫Il va passer par ces couches.
‫Et puis notre modèle, au fur et à mesure qu'il apprend des motifs, va faire des suppositions sur quelle étiquette appartient à quelle
‫image.
‫Et plus la supposition est mauvaise, plus la perte sera élevée.
‫C'est donc là qu'Adam intervient.
‫Rappelez-vous que ce gars en bas de la colline aux championnats internationaux de dissidence sur la colline
‫explique à notre modèle comment il peut améliorer ses suppositions à chaque époque.
‫Et puis nous allons voir comment notre modèle se comporte au niveau de la précision, car nous avons ce juge
‫spectateur au bas de la colline qui surveille les performances de notre modèle.
‫Donc, encore une fois, si tout cela n'a pas de sens, cela aura plus de sens une fois que nous commencerons à
‫exécuter un modèle.
‫Faisons donc une dernière vérification.
‫La dernière vérification est une dernière fois pour s'assurer que nous utilisons un GPU, car si nous n'utilisons pas de GPU, cette formation de
‫notre modèle sur des images va prendre un temps très, très long.
‫Vous avez vu dès le début qu'un GPU peut accélérer notre code jusqu'à 30 fois et parfois plus.
‫Écrivons ce code.
‫Vérifiez que nous fonctionnons toujours sur un GPU si perent.
‫GPU.
‫Disponible, et puis nous allons y aller.
‫Oui.
‫Si T. F. config, notamment les périphériques physiques.
‫Et puis nous voulons vérifier G. P. UNE. sinon non disponible, il s'agit donc du même code que nous avons écrit ci-dessus.
‫Mais nous avons besoin d'un GPU pour pouvoir exécuter cela dans un laps de temps considérable.
‫Oui, nous aurions également pu vérifier ici.
‫Rappelez-vous, c'est un petit truc de raccourci, mais j'aime dire cette impression ici maintenant.
‫Boum, nous avons un G. P. UNE. en cours d'exécution, nous avons configuré un certain
‫nombre d'époques, créons une fonction simple qui entraîne un modèle.
‫Alors corrigeons cela ici.
‫Créons une fonction qui entraîne un modèle et la fonction va créer un modèle à l'aide de create model.
‫Et puis nous voulons mettre en place un dixième rappel de tableau.
‫En utilisant notre fonction désormais, donc créer.
‫Vous voyez, c'est là que la création de fonctions est vraiment entrée en jeu pour nous ici.
‫Sinon, il faudrait écrire du code ad hoc.
‫Mais écrire des fonctions au début prend un peu plus de temps, mais à long terme nous fait gagner du temps.
‫Appelez donc la fonction sur notre modèle, en analysant les données d'entraînement, les données de validation.
‫Un certain nombre d'époques pour s'entraîner.
‫Qui est maintenant une boîte.
‫Nous justifions cela avec notre petit curseur malade et les kovács, qui sont nos fonctions d'aide que nous
‫aimerions utiliser, puis nous voulons enfin qu'il renvoie le modèle, nous allons changer cela en démarques.
‫Cela semble phénoménal.
‫OK, allons-y.
‫Il y avait une fonction pour entraîner et renvoyer un modèle entraîné.
‫Donc ici, nous sommes bien entraînés.
‫Je ne peux pas croire que nous en soyons enfin arrivés là.
‫Ceci est incroyable.
‫Nous formons notre premier réseau d'apprentissage profond et de connaissances.
‫Ainsi, les trains reçoivent un modèle et renvoient la version entraînée.
‫Agréable et simple.
‫N'oubliez pas que même si nous sommes excités, cela ne signifie pas que nous perdons nos habitudes de communication, nous
‫allons donc créer un modèle.
‫Donc, nous allons modèle égal, disons, c'est là qu'intervient notre fonction de création de modèle.
‫Oh oui.
‫C'est tellement satisfaisant à écrire.
‫Et puis nous allons créer une nouvelle session de conseil à chaque fois que nous formons un modèle.
‫Parce que rappelez-vous, avec notre tableau Tensas, avec notre rappel de tableau Tensas, nous sommes en fait nous appelons simplement Estancia
‫Board.
‫Nous n'avons pas besoin de ce rappel pour configurer notre fonction.
‫Donc, si nous revenons ici chaque fois qu'il est appelé, cela va créer un nouveau dossier dans les journaux avec la date
‫et l'heure actuelle.
‫C'est donc important car chaque fois que nous exécutons nos fonctions de modèle d'entraînement, donc chaque fois que
‫nous essayons d'entraîner un nouveau modèle, une nouvelle expérience, nous créons un dossier de journal, dont nous pouvons ensuite suivre les performances de
‫notre modèle.
‫C'est donc très utile plus tard, lorsque nous essayons d'évaluer quelle expérience a mieux fonctionné qu'une
‫autre.
‫Et puis nous allons adapter le modèle aux données transmises aux rappels que nous avons créés.
‫Maintenant, encore une fois, il y a probablement une meilleure façon de faire cette fonction, mais nous essayons juste de faire
‫en sorte qu'elle fonctionne.
‫Et puis nous pouvons revenir en arrière après avoir en quelque sorte traversé la phase d'ajustement d'un modèle pour la
‫première fois et l'affiner.
‫Allons modèle pour s'adapter et nous allons le passer.
‫X est égal aux données du train, qui sont un lot de données, si vous vous en souvenez, qui contient les images et les étiquettes.
‫Donc les époques vont être des époques Naameh, a. k. une. combien de fois notre modèle est-il autorisé à examiner
‫les données d'entraînement avant de s'arrêter ?
‫Ou combien de chances notre modèle a-t-il eu de passer sur l'ensemble de données d'entraînement pour trouver des modèles, puis les
‫données de validation ?
‫Il s'agira de données valides, qui sont également un groupe de données, ou d'un lot de données, désolé, et la fréquence de validation
‫correspond à la fréquence à laquelle nous voulons tester les modèles que notre modèle a trouvés sur notre ensemble de validation.
‫Et nous l'avons défini sur un parce que nous voulons qu'il teste ses modèles qu'il trouve dans l'ensemble d'apprentissage sur
‫les données de validation à chaque époque.
‫Donc une fois une époque et ensuite nos rappels sont embarqués sur Bordewich, nous venons de créer
‫ci-dessus avec notre fonction et l'arrêt précoce whoof.
‫Et puis on a envie de revenir modèle mettre un peu.
‫Renvoyez le modèle ajusté.
‫Comme c'est cool et maintenant nous pouvons adapter notre modèle aux données.
‫Pourquoi aussi simple que d'y aller.
‫Maquette, ECLSS, maquette de train.
‫Vous voyez les avantages de créer des fonctions afin que nous puissions exécuter cette fonction après avoir fait un tas
‫d'expériences différentes plus tard.
‫Et alors, êtes-vous prêt maintenant ?
‫Un petit détail ici.
‫Lors de la formation d'un modèle pour la première fois, en particulier sur des données d'image ou tout
‫autre type de données à grande échelle, la première époque prendra généralement le plus de temps par rapport au reste.
‫Maintenant, c'est parce que les fonctions que nous avons écrites obtiennent les données et elles ont été initialisées.
‫Donc un. k. une. charger les données dans la mémoire de notre GPU.
‫Maintenant, utiliser plus de données prendra généralement plus de temps, c'est pourquoi nous avons commencé avec un millier d'images
‫et donc après la première époque.
‫D'accord, nous l'avons configuré de manière à ce qu'il soit limité à 100, le premier peut prendre quelques
‫minutes après le premier aéroparc, l'APOC suivant ne devrait prendre que quelques secondes.
‫Alors vous êtes prêt.
‫On va faire ça ensemble.
‫Les doigts ont croisé toutes nos fonctions, car cela dépend en fait de quelques lignes de code
‫ici.
‫Disons, si cela fonctionne trois à un.
‫Regardez ce bâtiment, un modèle avec mobile net V2.
‫J'ai croisé les doigts.
‫J'espère que vous aussi.
‫Oh oui, ça démarre.
‫Tu vois, c'est parti, époque un sur 100.
‫Parce que la boîte est définie sur 100.
‫Donc, il va s'entraîner pour 25 étapes, ce qui signifie la taille de notre lot, donc si nous y allons, nous avons 800 images dans notre ensemble d'entraînement
‫car rappelez-vous, nous avons commencé avec un millier.
‫Donc, si nous divisons cela par 32, nous obtenons vingt-cinq.
‫C'est pourquoi la formation comporte vingt-cinq étapes, car il y a la taille du lot trente-deux et la validation.
‫Si on fait deux cents divisés par trente-deux, ça va être arrondi.
‫Il a donc été arrondi à sept.
‫C'est pourquoi nous avons la validation.
‫Donc 200 images sur un baccalauréat, c'est 30 à.
‫Et vérifiez ceci.
‫On y va.
‫Environ cinq minutes, et voici de quoi je parle avec la perte, alors maintenant toutes ces choses que
‫nous avons créées ici même, donc la perte.
‫Notre objectif est donc de ne pas oublier de minimiser les pertes.
‫Parce qu'on est en haut de la colline, on a le vertige, on veut aller en bas de la
‫colline, tu veux minimiser la fonction de perte ?
‫La perte est la hauteur de la colline.
‫Nous descendons ici.
‫Espérons donc que ce nombre diminue, mais nous voulons maximiser la précision.
‫C'est ainsi que nous saurons si notre modèle s'entraîne ou non, s'il s'agit de modèles d'apprentissage,
‫cette perte devrait diminuer, cette précision devrait augmenter.
‫Cela va donc prendre quelques minutes pour traverser la première époque.
‫Je vais attendre que la première époque soit passée, puis j'accélérerai cette vidéo et je vous verrai une fois
‫la première époque passée, car vous verrez les époques suivantes après celle-ci.
‫Donc, l'époque deux sur 100 va être assez rapide parce que nous utilisons un GPU.
‫La seule raison pour laquelle le premier prend du temps est qu'il doit charger toutes ces images dans la mémoire du
‫GPU.
‫Je te verrai assez instantanément, mais pour moi, ce sera environ trois minutes.
‫D'accord, je suis de retour.
‫Nous avons donc un ETA ici, qui correspond à l'heure d'arrivée estimée, il reste environ 12 secondes dans cette
‫première époque tant que tout se passe comme prévu.
‫Et vous pouvez donc voir que la perte a légèrement diminué et que la précision a augmenté.
‫C'est donc une bonne chose.
‫Maintenant, ce qu'on devrait voir à la fin de cette première époque, si on s'installe correctement, on devrait dire que
‫c'est perdu sur l'ensemble d'apprentissage et la précision sur l'ensemble d'apprentissage.
‫Nous devrions voir la perte des données de validation et la précision de l'ensemble de validation apparaître à tout moment maintenant.
‫Alors on attend juste.
‫Donc, ce qu'il fait probablement maintenant, c'est que cela fait un peu plus de 12 secondes, mais
‫il charge les données de validation en mémoire afin qu'il puisse calculer et évaluer ses performances sur cet ensemble de données.
‫Je ne peux pas croire que nous fassions ça, nous sommes comme faire briller un modèle ensemble en temps réel.
‫C'est phénoménal.
‫Je n'ai jamais fait ça avant.
‫C'est tant que votre code fonctionne.
‫Nous y voilà.
‫Regarde ça.
‫Alors maintenant, nous avons ce dont nous ne parlons pas, nous avons cette métrique sur les données d'entraînement et cette métrique
‫est sur la validation.
‫Alors voyez à quelle vitesse notre précision s'améliore.
‫Maintenant, je vous ai dit que les époques allaient s'accélérer.
‫Regarde ça.
‫Le premier a pris environ cinq minutes, mais ceux-ci prennent cinq secondes.
‫Nous sommes déjà à un point zéro précision.
‫C'est une précision de 100 pour cent sur les données d'entraînement.
‫C'est fou.
‫Donc, ce que cela nous dit en fait, c'est que c'est une bonne chose que notre modèle soit surajusté, car
‫il fonctionne bien mieux sur les données d'entraînement que sur les données de validation.
‫Mais c'est super, notre modèle fonctionne, il trouve des modèles, il utilise ce que mobile net V2
‫a appris et image net et il l'applique à nos chiens.
‫La vision du chien de l'ensemble de données prend vie.
‫Maintenant, j'espère que le vôtre fonctionne comme ça aussi parce que nous entraînons un modèle ensemble en temps réel.
‫C'est beau.
‫Donc, ce que nous devrions voir, c'est une fois que la précision de la validation cessera de s'améliorer pour un
‫certain nombre d'époques, donc, trois, en raison de notre rappel d'arrêt précoce, cela va arrêter l'entraînement.
‫Donc, en fait, je ne pense pas que nous atteindrons les 100 époques, peut-être même pas près, car
‫voyez ici, nous obtenons une précision de zéro avec une petite perte sur nos données d'entraînement.
‫Alors on y va.
‫Cela s'arrêta.
‫Mon cœur bat la chamade.
‫C'était phénoménal, alors je dis ce que je voulais dire, la première époque prend un certain temps parce qu'elle
‫charge des données en mémoire une fois qu'elle est chargée, ces données initiales dans la mémoire, le GPU va
‫juste aller, d'accord, le temps de marcher sur le gaz et allumera les post-combustion ou le gaz.
‫Pas de freins, bébé.
‫Nous avons donc atteint 18 époques sur 100.
‫Et nous pouvons voir que notre modèle sur notre ensemble de données d'entraînement fonctionne avec une précision de 100 %.
‫C'est assez fou.
‫1. 0.
‫Vous devez multiplier ce nombre par 100.
‫La perte est assez faible.
‫Je veux dire, une perte de zéro est parfaite.
‫Mais nous pouvons dire que notre modèle est surajusté car il fonctionne bien mieux sur les données d'entraînement
‫que sur les données de validation.
‫Donc, si nous revenons, c'est comme si notre modèle avait mémorisé les supports de cours plutôt que les principes de résolution de
‫problèmes de ces supports de cours.
‫Et il a du mal à s'adapter à un ensemble de données qu'il n'a jamais vu auparavant, c'est-à-dire un examen pratique ou notre ensemble de
‫validation.
‫Donc, à l'heure actuelle, notre modèle a une faible capacité de généralisation.
‫Donc c'était je pense que c'est suffisant pour une vidéo.
‫C'est beaucoup d'excitation.
‫Ce que je veux que vous fassiez un peu de travail, c'est avant que nous allions vérifier les journaux du forum dans la
‫vidéo suivante, car nous avons déjà utilisé notre rappel du conseil Tenzer auparavant.
‫Je veux que vous vérifiiez que c'est une question si c'est une question vraiment importante après que nous ayons essayé de modéliser.
‫Je veux que vous alliez questionner.
‫Il semble que notre modèle suralimente parce qu'il est performant.
‫Bien mieux sur l'ensemble de données d'entraînement que sur l'ensemble de données de validation.
‫Quels sont les moyens d'empêcher le surapprentissage du modèle dans l'apprentissage en profondeur, les réseaux de neurones ?
‫Nous allons donc transformer cela en un coup de grâce.
‫C'est une question que je veux que vous recherchiez avant d'entrer dans la prochaine vidéo, quels sont les moyens d'éviter le surapprentissage d'un
‫modèle et les réseaux connus en profondeur ?
‫Alors vérifiez cela même si vous n'êtes pas sûr d'eux.
‫Je veux juste que vous commenciez à être curieux de savoir ce qui se passe, et je veux que vous arrêtiez
‫de chercher des indices sur le moment où votre modèle est surajusté, par exemple en obtenant de bien meilleures performances sur l'ensemble de données
‫d'entraînement que sur l'ensemble de données de validation.
‫Et une petite note ici, le surapprentissage de la note pour commencer est une bonne chose.
‫Cela signifie que notre modèle apprend.
‫Je suis donc incroyablement excité que nous venons de former ensemble notre premier réseau neuronal d'apprentissage en profondeur à
‫l'aide de la vision de chien d'apprentissage par transfert qui prend vie.
‫Nous avons donc fini d'entraîner un modèle, au moins un premier sous-ensemble d'un modèle.
‫Ce n'est pas sur les données complètes.
‫Ce n'est que sur mille images.
‫Donc, notre prochaine étape est de savoir si nous entrons dans notre keynote, que faisons-nous?
‫Nous adaptons donc le modèle aux données.
‫Nous n'avons pas encore fait de prédiction.
‫Donc, ce que nous pourrions faire, c'est évaluer le modèle à l'aide de nos rappels de tableau de tenseur afin que vous puissiez le voir.
‫Et puis nous découvrirons comment faire une prédiction avec notre modèle entraîné.
‫Sonne comme un plan.
‫Alors jetez un œil à cette question et je vous verrai dans la prochaine vidéo.