WEBVTT

00:00.540 --> 00:05.090
Bonjour et bienvenue dans cette histoire presque le titre final de ce module.

00:05.100 --> 00:10.260
Je vais simplement expliquer le code principal qui exécutera le tout avant que nous obtenions les résultats

00:10.290 --> 00:11.930
intéressants et regardions les vidéos.

00:12.090 --> 00:15.920
Il s’agit donc du code principal et, comme vous pouvez le constater, c’est assez court.

00:15.930 --> 00:21.120
Nous commençons par importer les bibliothèques et les modules, ainsi que les différentes classes et fonctions que nous avons

00:21.120 --> 00:24.270
créées, comme Altikriti, à partir de notre fichier de modèle.

00:24.390 --> 00:30.210
La fonction train à partir du fichier train et la fonction test à partir du fichier test et, bien

00:30.270 --> 00:31.930
sûr, nous importons notre optimiseur.

00:31.950 --> 00:37.350
Ensuite, nous commençons par la première section où nous entrons dans une classe avec tous les paramètres.

00:37.500 --> 00:39.660
Et c'est ceci peut-être.

00:39.720 --> 00:44.040
Rappelez-vous que c'est l'objet BRAM que nous avons créé à partir de cette classe harams.

00:44.040 --> 00:48.900
Chaque fois que nous obtenons un paramètre tel que le taux d'apprentissage, nous ne sommes pas sans.

00:49.200 --> 00:50.870
Alors passons-les en revue rapidement.

00:50.880 --> 00:54.380
Ce premier ou ici est les taux d'apprentissage.

00:54.480 --> 00:59.140
Comme vous pouvez le constater, nous en choisissons un petit et vous notez le deuxième paramètre.

00:59.160 --> 01:09.810
Encore une fois, nous prenons comme 0. 39 nous prenons un paramètre OneTel un ensemble de 1 16 processus 20 étapes et longueur maximale

01:09.900 --> 01:10.850
de 10000.

01:10.850 --> 01:17.580
Et nous en avons parlé, c’est le paramètre que nous avons défini pour nous assurer que l’agent ne reste pas indéfiniment dans

01:17.730 --> 01:20.910
un état de l’environnement afin que cela arrête la partie.

01:21.060 --> 01:28.800
Si la longueur de l'épisode dépasse cette longueur maximale, nous obtenons bien sûr le nom de notre

01:28.800 --> 01:29.690
environnement.

01:29.790 --> 01:30.890
La rupture est zéro.

01:30.990 --> 01:37.770
Et en passant, vous pouvez également jouer sur d'autres environnements en changeant simplement le nom de l'environnement

01:37.770 --> 01:38.410
ici.

01:38.430 --> 01:44.760
Donc, si vous voulez jouer à d’autres versions de Breakout ou même à d’autres jeux Atari, vous pouvez

01:45.030 --> 01:48.580
simplement remplacer ce dépassement de zéro par d’autres jeux.

01:48.750 --> 01:53.730
Mais je peux vous dire que la vidéo époustouflante est déjà très difficile.

01:53.730 --> 01:56.030
Bon alors tous les paramètres ici.

01:56.160 --> 01:59.330
Et puis il y a le code principal pour l'exécution principale.

01:59.550 --> 02:02.850
Et alors, voyons ce que nous faisons dans cette première ligne.

02:02.850 --> 02:05.270
Nous mettons en place un thread par cœur.

02:05.430 --> 02:11.880
Ensuite, à la deuxième ligne, nous obtenons tous les rendus lorsque vous savez créer un nouvel objet de

02:12.150 --> 02:18.810
la classe Paramjit qui initialisera ici tous ces paramètres car il existe des variables associées à cet objet

02:18.810 --> 02:19.490
BRAM.

02:19.560 --> 02:20.840
Ensuite, nous mettons la graine.

02:20.970 --> 02:28.830
Ensuite, nous obtenons notre environnement en utilisant l’arborescence Créer et nous fonctionnons avec le nom de notre environnement qui sort

02:28.830 --> 02:30.040
de zéro.

02:30.040 --> 02:35.410
Vous voyez les cellules qui nomment et par conséquent paramètre et nom sont plutôt nuls.

02:35.430 --> 02:37.660
Donc, cela nous procurera l’environnement de rupture.

02:37.890 --> 02:42.870
Et au fait, ce n’est pas la manière habituelle de créer un environnement, mais vous

02:42.870 --> 02:45.540
devez améliorer l’ensemble du processus et les performances.

02:45.690 --> 02:52.470
Nous utilisons cela pour créer un environnement optimisé et nous le faisons, l'univers est un paquet qui vient

02:52.630 --> 02:57.730
avec tous les paquets que vous avez installés sur un moteur ouvert.

02:57.870 --> 03:01.490
Eh bien, grâce à l’univers, nous obtenons un environnement optimisé.

03:01.590 --> 03:03.320
C'est ce dont il s'agit ici.

03:04.050 --> 03:09.240
Ensuite, nous obtenons notre modèle partagé en créant un objet de la classe de critique active.

03:09.240 --> 03:14.430
Et donc ici, il est important de comprendre que ce modèle partagé est le modèle partagé par les

03:14.430 --> 03:15.030
différents agents.

03:15.180 --> 03:17.880
Nous avons donc différents fils dans différents cours.

03:18.210 --> 03:25.410
Et en parlant de menaces sur la ligne suivante ici, modèle plissé qui partage la mémoire, ce que nous faisons, c’est que nous

03:25.500 --> 03:31.260
stockons le modèle dans la mémoire partagée de l’ordinateur afin que tous les threads puissent y accéder même

03:31.260 --> 03:32.960
s’ils suivent un chemin différent.

03:33.000 --> 03:34.510
C'est ce que nous faisons ici.

03:34.530 --> 03:42.410
C’est pour cela que nous obtenons notre optimiseur lié aux paramètres de notre modèle partagé et avec

03:42.410 --> 03:45.780
un taux d’apprentissage d’un point ou un.

03:45.930 --> 03:51.030
Et encore une fois, il est important de comprendre que l'optimiseur est également partagé car il

03:51.030 --> 03:57.720
va agir sur le modèle partagé et indiquer que la ligne suivante optimise la mémoire partagée, nous stockons l'optimiseur dans

03:57.780 --> 04:02.530
la mémoire partagée afin que tous les agents puissent y accéder le modèle.

04:02.910 --> 04:10.260
Nous initialisons ensuite nos processus afin que le processus de test ne mette pas à jour le modèle partagé, mais qu’il l’utilise simplement

04:10.260 --> 04:14.710
pour l’essayer en une partie, pour imprimer la partition et enregistrer les vidéos.

04:14.820 --> 04:17.920
C'est donc exactement ce qui est fait ici avec le test Target Equals.

04:17.940 --> 04:24.330
C'est le processus de test et ce processus est coupé de la torture que le pré-traitement multiple.

04:24.450 --> 04:31.600
Donc, ici et ce qu'il fait, c'est qu'il exécute une fonction sur un thread indépendant.

04:31.860 --> 04:38.050
Ainsi, lorsque nous redémarrons, nous démarrons un nouveau processus, qui était la dernière année de l’année dernière.

04:38.370 --> 04:45.030
Et puis avec ce processus d’appendice P nous ajoutons le processus dans la liste des processus.

04:45.270 --> 04:52.170
Enfin, dans cette boucle, nous ne faisons qu’une boucle pour exécuter tous les autres processus qui seront formés en mettant

04:52.380 --> 04:54.320
à jour le modèle partagé.

04:54.780 --> 04:58.030
Et c'est essentiellement ce qui se passe dans les dernières lignes de code ici.

04:58.380 --> 05:03.870
Donc, si vous ne voulez pas entrer dans les détails, il est important de comprendre que cela va

05:03.870 --> 05:09.420
exécuter les processus de manière optimale et que nous devrions donc tous être doués pour exécuter ce code

05:09.420 --> 05:12.670
et avoir un modèle bien formé, puis regarder Les resultats.

05:12.840 --> 05:14.150
Donc j'ai hâte de faire ça.

05:14.160 --> 05:16.110
Cela va être très excitant.

05:16.110 --> 05:19.240
Je vais essayer de trouver des gens maintenant pour que nous puissions tous le regarder ensemble.

05:19.350 --> 05:21.440
Et ainsi jusqu'à la prochaine fois je
