WEBVTT

00:00.390 --> 00:04.920
Hallo en welkom bij deze tutorial, bijna de laatste tutorial van deze module.

00:04.950 --> 00:10.230
Ik ga gewoon de hoofdcode uitleggen die het hele ding zal uitvoeren voordat we de opwindende resultaten krijgen

00:10.230 --> 00:11.680
en de video's bekijken.

00:11.970 --> 00:13.770
Dit is dus de hoofdcode.

00:13.770 --> 00:15.570
En zoals je kunt zien, is dit vrij kort.

00:15.750 --> 00:21.390
We beginnen met het legen van de bibliotheken en de modules en ook de verschillende klassen en

00:21.390 --> 00:27.810
functies die we hebben gemaakt, zoals acto-kritiek uit ons modelbestand, de treinfunctie uit het treinbestand en zijn functie uit het

00:27.990 --> 00:28.670
testbestand.

00:28.680 --> 00:31.040
En natuurlijk importeren we onze optimizer.

00:31.800 --> 00:38.190
Dan beginnen we met de eerste sectie waar we in een klasse komen, alle parameters, en dit is dit

00:38.580 --> 00:39.020
programma.

00:39.570 --> 00:46.320
Onthoud dat dit het object is dat we uit de klasse van dit programma hebben gemaakt telkens wanneer we een parameter hebben

00:46.500 --> 00:48.570
zoals de leersnelheid, gamma of tau.

00:49.050 --> 00:50.420
Dus laten we ze snel doornemen.

00:50.700 --> 00:54.170
Deze eerste hier is het leertempo.

00:54.330 --> 00:56.370
Dus zoals je ziet, kiezen we voor een klein leertempo.

00:56.940 --> 00:58.750
De tweede is de gammaparameter.

00:58.980 --> 01:01.740
Nogmaals, we nemen het als een punt negenennegentig.

01:02.070 --> 01:10.610
We nemen één parameter, een set van zestien processen, 20 stappen, een maximale lengte van tienduizend.

01:10.620 --> 01:11.990
Vergeet niet dat we daarover spraken.

01:12.420 --> 01:18.360
Dit is de parameter die we instellen om ervoor te zorgen dat de agent niet voor onbepaalde tijd vast komt te zitten in een toestand van

01:18.360 --> 01:18.840
de omgeving.

01:18.850 --> 01:24.420
Dus dit zal het spel stoppen als de lengte deze maximale lengte overschrijdt.

01:24.870 --> 01:30.780
En uiteindelijk krijgen we natuurlijk de naam van onze omgevingsdoorbraak V0 nul.

01:30.790 --> 01:37.960
En trouwens, je kunt ook in sommige andere omgevingen spelen door deze naam van de omgeving hier te veranderen.

01:38.280 --> 01:43.980
Dus als je een aantal andere breakout-versies of zelfs een aantal andere Atari-games wilt spelen, nou,

01:43.980 --> 01:48.300
dan kun je deze breakout V0 hier eenvoudig vervangen door andere games.

01:48.630 --> 01:52.680
Maar ik kan je vertellen dat het uitbreken van V0 al een hele uitdaging is.

01:53.550 --> 01:53.940
Oke.

01:53.950 --> 01:59.040
Dus alle parameters hier en daar is de hoofdcode voor de hoofdrun.

01:59.370 --> 02:02.430
En dus hier, laten we eens kijken wat we doen in deze eerste regel.

02:02.700 --> 02:04.860
We stellen één draadkern in.

02:05.280 --> 02:12.300
Vervolgens krijgen we in de tweede regel al onze parameters door een object van de parameterklasse te maken,

02:12.300 --> 02:18.720
die al deze parameters hier zal ophalen en initialiseren omdat er variabelen aan dit parameterobject zijn

02:18.750 --> 02:19.200
gekoppeld.

02:19.410 --> 02:27.630
Dan stellen we het zaad in, dan gebruiken we onze omgeving om Attari te creëren en te functioneren met de naam van

02:27.630 --> 02:29.880
onze omgeving, die nul opbreekt.

02:29.910 --> 02:34.910
Je ziet die eindnaam en dus parameters en naam is Bergkamp nul.

02:35.280 --> 02:37.430
Dus dat brengt ons in de omgeving van uitbraak.

02:37.710 --> 02:42.540
En trouwens, dit is niet de gebruikelijke manier om een omgeving te creëren, maar, weet

02:42.540 --> 02:49.520
je, om het hele proces te verbeteren en de prestaties te verbeteren terwijl we dit gebruiken om daadwerkelijk een geoptimaliseerde omgeving te creëren.

02:49.860 --> 02:56.490
En dit doen we dankzij Univers Universe is een pakket dat wordt geleverd met alle pakketten die u hebt geïnstalleerd bij het

02:56.490 --> 02:57.500
openen van IJM.

02:57.690 --> 03:01.230
Welnu, dankzij Universe krijgen we een geoptimaliseerde omgeving.

03:01.440 --> 03:03.090
Dit is waar het hier allemaal om draait.

03:03.930 --> 03:10.140
Vervolgens krijgen we ons gedeelde model door een object van de activiteitsklasse te maken, en dus is het hier belangrijk om te

03:10.140 --> 03:14.800
begrijpen dat dit gedeelde model het model is dat door de verschillende agenten wordt gedeeld.

03:15.060 --> 03:17.450
Dus we hebben verschillende threads in verschillende cursussen.

03:18.030 --> 03:22.930
En over discussies gesproken op de volgende regel hier, gedeeld model dat geheugen deelt.

03:23.250 --> 03:29.820
Wat we doen, is dat we het model opslaan in het gedeelde geheugen van de computer, zodat alle threads er toegang toe kunnen krijgen,

03:29.820 --> 03:32.640
zelfs als ze zich in een andere koers bevinden.

03:32.850 --> 03:34.330
Dus dat is wat we hier doen.

03:34.380 --> 03:36.210
Dit is om dit mogelijk te maken.

03:36.720 --> 03:43.470
Vervolgens krijgen we onze optimizer gekoppeld aan de parameters van ons gedeelde model en met de leersnelheid van

03:43.680 --> 03:45.200
0. 01.

03:45.720 --> 03:50.850
En nogmaals, het is belangrijk om te begrijpen dat de optimizer ook wordt gedeeld omdat deze gaat werken op

03:50.850 --> 03:51.810
het gedeelde model.

03:52.020 --> 03:59.370
En hetzelfde geldt voor de volgende regel naar het stoelgeheugen, we slaan de optimizer op in het gedeelde geheugen zodat alle agenten er toegang

03:59.370 --> 04:02.140
toe kunnen krijgen om het model te optimaliseren.

04:02.760 --> 04:10.200
Vervolgens initialiseren we onze processen zodat het testproces het gedeelde model niet bijwerkt, maar het alleen gebruikt om het op één onderdeel te

04:10.200 --> 04:14.460
proberen en de partituur af te drukken en de video's op te nemen.

04:14.670 --> 04:17.720
Dus dat is precies wat hier wordt gedaan met Target is gelijk aan test.

04:17.790 --> 04:19.170
Dat is het testproces.

04:19.360 --> 04:24.150
En dit proces hier wordt afgesneden van naar die meervoudige verwerking.

04:24.280 --> 04:31.240
Dus hier en wat het doet, is dat het in feite een functie uitvoert op een onafhankelijke bedreiging.

04:31.740 --> 04:37.830
Dus als we dan beginnen, starten we een nieuw proces, dat hier op dat moment geïnitialiseerd was.

04:38.160 --> 04:44.730
En dan met dit proces dat Appen P is, voegen we het proces toe aan de lijst met processen.

04:45.090 --> 04:52.200
En tot slot, in deze lus hier, doen we gewoon een lus om alle andere processen uit te voeren die zullen worden getraind door

04:52.200 --> 04:53.990
het gedeelde model bij te werken.

04:54.600 --> 04:57.660
En dat is eigenlijk wat er gebeurt in de laatste regels code hier.

04:58.230 --> 05:03.210
Dus als je niet in de details wilt treden, is het belangrijk om te begrijpen dat dit de processen

05:03.390 --> 05:09.240
op een optimale manier zal laten verlopen en daarom zouden we allemaal goed moeten zijn om deze code uit te voeren en

05:09.240 --> 05:12.280
een getraind model te hebben en uiteindelijk bekijk de resultaten.

05:12.690 --> 05:14.050
Dus ik kan niet wachten om dat te doen.

05:14.070 --> 05:15.600
Dit gaat best spannend worden.

05:15.930 --> 05:19.050
Ik zal nu chiral proberen te vinden, zodat we het allemaal samen kunnen bekijken.

05:19.170 --> 05:21.420
En dus tot de volgende keer, geniet van I.
