WEBVTT

00:00.540 --> 00:05.090
Bună ziua și bun venit la această poveste aproape titlul final al acestui modul.

00:05.100 --> 00:10.260
Voi explica codul principal care va executa intregul lucru inainte de a obtine rezultatele

00:10.290 --> 00:11.930
incitante si urmariti videoclipurile.

00:12.090 --> 00:15.920
Deci acesta este codul principal și după cum puteți vedea acest lucru este destul de scurt.

00:15.930 --> 00:21.120
Începem prin importarea bibliotecilor și a modulelor, precum și a diferitelor clase și funcții pe care

00:21.120 --> 00:24.270
le-am făcut ca Altikriti din fișierul nostru de model.

00:24.390 --> 00:30.210
Funcția de tren din fișierul tren și funcția de testare din fișierul de testare și bineînțeles

00:30.270 --> 00:31.930
că importăm optimizatorul nostru.

00:31.950 --> 00:37.350
Apoi începem cu prima secțiune în care intrăm într-o clasă toți parametrii.

00:37.500 --> 00:39.660
Și acesta este probabil acest lucru.

00:39.720 --> 00:44.040
Amintiți-vă acest lucru este obiectul BRAMs pe care l-am creat din această clasă harams.

00:44.040 --> 00:48.900
De fiecare dată când avem un parametru ca rata de învățare, nu suntem absenți.

00:49.200 --> 00:50.870
Asa ca sa trecem rapid prin ele.

00:50.880 --> 00:54.380
Această primă sau aici este rata de învățare.

00:54.480 --> 00:59.140
Deci, după cum puteți vedea, alegem un mic și veți evalua al doilea parametru.

00:59.160 --> 01:09.810
Din nou, considerăm că este 0. 39 luăm un parametru OneTel un set de 1 16 procese cu 20 de pași și o lungime

01:09.900 --> 01:10.850
maximă de 10000.

01:10.850 --> 01:17.580
Și am vorbit despre faptul că acesta este parametrul pe care l-am stabilit pentru a ne asigura că agentul nu se blochează pe o perioadă nedeterminată

01:17.730 --> 01:20.910
într-o stare a mediului, astfel încât acest lucru va opri jocul.

01:21.060 --> 01:28.800
Dacă lungimea episodului depășește această lungime maximă și în cele din urmă, desigur, obținem numele mediului

01:28.800 --> 01:29.690
nostru.

01:29.790 --> 01:30.890
Spargerea este zero.

01:30.990 --> 01:37.770
Și de modul în care puteți juca, de asemenea, în alte medii doar prin schimbarea denumirii mediului înconjurător

01:37.770 --> 01:38.410
aici.

01:38.430 --> 01:44.760
Deci, dacă vrei să joci la alte versiuni de breakout sau chiar și la alte jocuri Atari, poți pur și

01:45.030 --> 01:48.580
simplu să înlocuiști această rupere de zero cu alte jocuri.

01:48.750 --> 01:53.730
Dar vă pot spune că videoclipul breakout este deja foarte provocator.

01:53.730 --> 01:56.030
În regulă, toți parametrii de aici.

01:56.160 --> 01:59.330
Și apoi există codul principal pentru rularea principală.

01:59.550 --> 02:02.850
Așa că aici ne vedem ce facem în această primă linie.

02:02.850 --> 02:05.270
Am stabilit câte un fir pe miez.

02:05.430 --> 02:11.880
Apoi, în linia a doua vom obține toți redare de până știți că a crea un nou obiect

02:12.150 --> 02:18.810
al clasei Paramjit, care va primi inițializa toți acești parametri aici, deoarece există variabile atașat la acest obiect

02:18.810 --> 02:19.490
BRAMs.

02:19.560 --> 02:20.840
Apoi am setat semințele.

02:20.970 --> 02:28.830
Apoi vom obține mediul nostru folosind funcția Creați arbore și funcția cu numele mediului nostru care va ieși

02:28.830 --> 02:30.040
din zero.

02:30.040 --> 02:35.410
Veți vedea celulele pe care le numiți și prin urmare parametrul și numele sunt destul de zero.

02:35.430 --> 02:37.660
Așa că ne va aduce mediul de izbucnire.

02:37.890 --> 02:42.870
Și de modul în care acest lucru nu este modul obișnuit de a crea un mediu, dar

02:42.870 --> 02:45.540
știți să îmbunătățiți întregul proces și să îmbunătățiți performanța.

02:45.690 --> 02:52.470
Ei bine, folosim acest lucru pentru a crea un mediu optimizat și acest lucru facem universul universului

02:52.630 --> 02:57.730
este un pachet care vine cu toate pachetele instalate pe motorul deschis.

02:57.870 --> 03:01.490
Ei bine, datorită universului, avem un mediu optimizat.

03:01.590 --> 03:03.320
Aici este vorba despre asta.

03:04.050 --> 03:09.240
Atunci obținem modelul nostru comun creând un obiect al clasei critice active.

03:09.240 --> 03:14.430
Și aici este important să înțelegeți că acest model comun este modelul împărțit de diferiți

03:14.430 --> 03:15.030
agenți.

03:15.180 --> 03:17.880
Deci, avem diferite fire în diferite cursuri.

03:18.210 --> 03:25.410
Și vorbind de amenințări la următoarea linie de aici, modelul care se răstoarnă care memorează ceea ce facem este să stocăm modelul

03:25.500 --> 03:31.260
în memoria partajată a computerului, astfel încât toate firele să poată avea acces la el, chiar dacă

03:31.260 --> 03:32.960
sunt în curs diferit.

03:33.000 --> 03:34.510
Așa facem aici.

03:34.530 --> 03:42.410
Aceasta este pentru a permite acest lucru apoi vom obține Optimizatorul nostru legate de parametrii modelului nostru comun și cu o

03:42.410 --> 03:45.780
rată de învățare de un punct sau unul.

03:45.930 --> 03:51.030
Și din nou, este important să înțelegeți că optimizatorul este, de asemenea, partajat deoarece va acționa

03:51.030 --> 03:57.720
pe modelul partajat și va spune că următoarea linie a optimizat acea memorie partajată pe care o stocăm optimizatorul în memoria partajată,

03:57.780 --> 04:02.530
astfel încât toți agenții să poată avea acces la acesta pentru a optimiza modelul.

04:02.910 --> 04:10.260
Apoi inițializăm procesele noastre, astfel încât procesul de testare să nu actualizeze modelul partajat, ci doar îl folosește pentru a încerca

04:10.260 --> 04:14.710
într-o parte și pentru a imprima scorul și pentru a înregistra videoclipurile.

04:14.820 --> 04:17.920
Așa este exact ceea ce se face aici cu testul Target equals.

04:17.940 --> 04:24.330
Acesta este procesul de testare și acest proces aici este tăiat de la tortură pe care multi-pre-procesare.

04:24.450 --> 04:31.600
Deci, aici și ceea ce face este că în principiu rulează o funcție pe un fir independent.

04:31.860 --> 04:38.050
Deci, atunci când repornim începem un nou proces care a fost inițial Anul trecut în acest moment.

04:38.370 --> 04:45.030
Și apoi, cu acest proces pentru a adăuga P, adăugăm procesul în lista proceselor.

04:45.270 --> 04:52.170
Și în final, în această buclă aici, facem o buclă pentru a rula toate celelalte procese care vor fi

04:52.380 --> 04:54.320
instruite prin actualizarea modelului partajat.

04:54.780 --> 04:58.030
Și asta este în principiu ceea ce se întâmplă în ultimele rânduri de cod aici.

04:58.380 --> 05:03.870
Deci, dacă nu doriți să obțineți detalii despre acest lucru, importantul lucru pe care trebuie să îl înțelegeți este că

05:03.870 --> 05:09.420
acesta va conduce procesele într-un mod optim și, prin urmare, ar trebui să fim bine să executăm acest cod și

05:09.420 --> 05:12.670
să avem un model instruit și, în cele din urmă, rezultatele.

05:12.840 --> 05:14.150
Așa că nu pot să aștept să fac asta.

05:14.160 --> 05:16.110
Asta va fi destul de interesant.

05:16.110 --> 05:19.240
Voi încerca să găsesc oameni acum, astfel încât să putem toți să privim împreună.

05:19.350 --> 05:21.440
Și până la următoarea dată
