WEBVTT

00:00.240 --> 00:02.790
Bună ziua și bun venit la acest tutorial Python.

00:02.790 --> 00:07.230
În regulă, avem o ultimă funcție de implementat în clasa noastră de memorie replay.

00:07.230 --> 00:12.060
Aceasta este funcția simplă și asta e, desigur, pentru a obține niște mostre aleatorii din memoria noastră.

00:12.210 --> 00:16.080
Prin urmare, această funcție va returna aceste mostre aleatorii.

00:16.080 --> 00:17.850
În regulă, deci hai să intrăm în ea.

00:17.870 --> 00:20.630
O vom numi simplu.

00:20.640 --> 00:21.330
Începem.

00:21.420 --> 00:25.030
Și această funcție are două argumente ca intrare.

00:25.260 --> 00:32.490
Primul, ca obișnuit, obiectul nostru viitor de a relua clasa de memorie și al doilea argument este să încerci

00:32.490 --> 00:33.430
să ghicești.

00:33.510 --> 00:40.290
Ei bine, luăm câteva eșantioane de dimensiuni fixe și, prin urmare, trebuie să alegem o dimensiune pentru eșantioane și mai

00:40.290 --> 00:42.610
precis o numim o dimensiune lot.

00:42.820 --> 00:47.910
Deci asta este numele pe care îl vom da la cea de-a doua dimensiune a lotului de argument.

00:48.180 --> 00:49.530
Și acolo mergem.

00:49.560 --> 00:54.490
Avem cele două argumente și acum putem implementa funcția simplă.

00:54.500 --> 01:00.780
Deci, acum vreau doar să vă avertizez că acest lucru va deveni puțin tehnic, dar voi încerca tot ce pot pentru a-mi explica.

01:01.250 --> 01:05.140
Așa că vom începe prin crearea variabilei de mostre.

01:05.150 --> 01:09.620
Aceasta este doar variabila care va conține eșantioanele memoriei.

01:09.620 --> 01:11.340
Atât de simplu este egal.

01:11.360 --> 01:14.090
Și acum, cum vom obține aceste mostre?

01:14.450 --> 01:20.960
Ei bine, mai întâi de toate trebuie să ne luăm memoria pentru că luăm mostrele din memoria noastră.

01:20.960 --> 01:26.870
Apoi, probabil că vom avea nevoie de dimensiunea lotului, deoarece eșantioanele vor lua în considerare dimensiunea lotului

01:26.930 --> 01:27.720
lui Elon.

01:27.830 --> 01:33.920
Deci, avem nevoie de memorie avem nevoie de dimensiunea lotului și apoi avem nevoie de niște trucuri sau bizoni pentru a obține un

01:34.040 --> 01:35.600
format bun al acestor eșantioane.

01:35.600 --> 01:40.790
Deci, ce voi face eu voi scrie linia de cod și apoi voi explica elementul

01:40.790 --> 01:41.900
după element.

01:41.990 --> 01:42.860
Deci hai sa o facem.

01:42.860 --> 01:48.580
Încep prin a lua o funcție de zip, voi explica foarte curând ce face.

01:48.620 --> 01:51.980
Și în interiorul acestei funcții voi adăuga o stea.

01:52.100 --> 01:53.800
Și eu o voi extinde.

01:53.900 --> 02:02.600
Steaua și gândul aleator Central, atât de aleatoriu, cum probabil ați ghicit, este biblioteca aleatoare pe care am importat-o

02:02.600 --> 02:03.360
​​aici.

02:03.410 --> 02:08.900
Deci, acesta este motivul principal pentru care a trebuit să importăm aceste biblioteci aleatorii pentru că luăm câteva

02:08.900 --> 02:09.730
mostre aleatorii.

02:10.040 --> 02:15.570
Deci, din această bibliotecă aleatorie, vom folosi funcția simplă.

02:15.600 --> 02:20.060
Deci, aceasta este variabilele noastre și aceasta este o funcție, așa că voi adăuga unele paranteze.

02:20.210 --> 02:26.110
Și acum, după cum puteți vedea eșantionul, este o funcție și trebuie să punem câteva argumente astfel încât să puteți

02:26.110 --> 02:27.850
vedea primul argument în sine.

02:27.850 --> 02:34.660
Și de fapt vorbind de sine, acest lucru corespunde memoriei de auto-vorbire, amintirea noului nostru obiect de obiect al memoriei

02:34.870 --> 02:36.970
noastre de reluare pentru noi.

02:37.180 --> 02:44.290
Așa că am să adaug aici sine că amintirea și apoi al doilea argument este așa cum ați fi ghicit

02:44.530 --> 02:51.360
mărimea bechuanei luați în mod aleatoriu din memoria noastră și că i-am dat un nume care este dimensiunea lotului.

02:51.550 --> 02:55.690
Așadar, al doilea argument va fi Bachche nenorocit.

02:55.870 --> 02:56.410
In regula.

02:56.470 --> 03:01.080
Deci linia de cod este tastată și voi explica ce face.

03:01.510 --> 03:08.260
Deci, in primul rand cu aceasta functie simpla punct simpla, luam cateva mostre aleatoare din memoria care

03:08.800 --> 03:11.820
avea o dimensiune fixa de acea dimensiune.

03:12.550 --> 03:13.940
Deci, este de înțeles.

03:14.150 --> 03:18.230
Dar ce înseamnă această funcție a stelei Zipp?

03:18.530 --> 03:20.500
Ei bine, nu există nici un mister despre asta.

03:20.540 --> 03:22.870
Este la fel ca funcția de remodelare.

03:22.880 --> 03:28.460
Deci, de exemplu, voi adăuga un pic veni aici doar pentru a explica că o voi elimina.

03:28.460 --> 03:34.680
De exemplu, să spunem că, de exemplu, avem o listă cu următoarele elemente, de exemplu.

03:34.820 --> 03:37.900
Primele două două.

03:38.180 --> 03:39.680
Și apoi al doilea element.

03:39.680 --> 03:43.180
Patru cinci sase.

03:43.190 --> 03:48.020
Așadar, avem o listă de două dubluri de câte trei elemente câte două, trei patru cinci șase.

03:48.380 --> 03:52.690
Ei bine, dacă aș aplica funcția zip cu steaua pe ea.

03:52.880 --> 04:02.840
Ei bine, ceea ce ar deveni astfel lista de stele Zip va fi egal cu o nouă listă, dar de

04:03.380 --> 04:12.440
o formă diferită și o formă diferită va fi una pentru atunci două trei și apoi cinci șase.

04:12.460 --> 04:12.770
In regula.

04:12.800 --> 04:13.950
Deci asta este exact ceea ce face.

04:13.970 --> 04:16.640
Reformează doar lista ta.

04:16.990 --> 04:21.610
Așa că acum înțelegi ce face această listă de stele Zipp.

04:21.680 --> 04:24.560
Acum, să explicăm de ce a trebuit să facem asta.

04:24.590 --> 04:30.360
Așa cum ați înțeles, vom adăuga evenimentele în memorie și evenimentele au forma.

04:30.440 --> 04:34.530
Mai întâi statul, atunci acțiunea și apoi răsplata.

04:34.820 --> 04:40.330
Dar pentru algoritmul nostru nu vrem acest format dorim ca mostrele să aibă următorul format.

04:40.330 --> 04:47.540
Un format este compus din trei eșantioane un eșantion pentru statele un eșantion pentru acțiuni și un eșantion

04:47.540 --> 04:48.660
pentru recompensă.

04:48.800 --> 04:53.690
De exemplu, să spunem că unul până la trei este unul de acțiune.

04:53.800 --> 05:01.100
Vrem unu și apoi stat la acțiunea doi și am fost bine pentru ceea ce vrem este un lot pentru fiecare

05:01.100 --> 05:03.630
lot pentru statul unu și statul doi.

05:03.680 --> 05:10.090
Unul este un meci pentru acțiunea unu în acțiune două și o treime că pentru că am fost unul și am fost doi.

05:10.190 --> 05:15.680
Acesta este doar formatul care urmează să fie de așteptat pentru că atunci vom înfășura aceste loturi

05:15.770 --> 05:22.610
într-o plăcuță cu un impact oribil, care până acum ne vom aminti este o variabilă care conține atât un tensor cât și

05:22.610 --> 05:23.280
un gradient.

05:23.510 --> 05:29.750
Și asta pentru a putea diferenția în raport cu un tensor să fie capabil să se

05:29.750 --> 05:35.480
diferențieze în raport cu intensul în structura unui tensor îngrozitor și a unui gradient.

05:35.540 --> 05:37.820
Din nou, așa funcționează pistolul Pi.

05:37.820 --> 05:44.480
Așadar, pentru a rezuma, vom crea un lot pentru fiecare dintre acțiunile și recompensele statului și apoi vom pune fiecare

05:44.480 --> 05:50.600
dintre aceste veturi separat în niște octeți pe care Horrible le va avea fiecare un gradient astfel încât

05:50.840 --> 05:54.360
în ​​cele din urmă să putem diferenția fiecare dintre ei.

05:54.620 --> 05:57.430
În regulă, acesta este scopul funcției Zipp.

05:57.480 --> 06:00.350
Permiteți-mi să elimin acest comentariu.

06:00.530 --> 06:05.980
Și acum singurul lucru pe care trebuie să-l facem este să returnați probele.

06:06.230 --> 06:12.650
Așa cum am explicat că nu putem returna probele direct din simplul motiv că vrem

06:12.830 --> 06:15.670
să punem probele într-o formă viabilă.

06:15.680 --> 06:22.580
Deci, pentru a face acest lucru pentru fiecare probă vom folosi funcția de hartă și această funcție

06:22.580 --> 06:30.180
de hartă va face cartografierea de la eșantioane la variabilele de tortură care vor conține un tensor și un gradient.

06:30.200 --> 06:33.550
Deoarece puteți vedea această funcție de hartă, aveți mai multe argumente.

06:33.620 --> 06:38.600
Primul argument este o funcție și această funcție va fi funcția care va converti

06:38.600 --> 06:40.590
mostrele în unele variabile torche.

06:40.760 --> 06:45.340
Iar al doilea argument este ceea ce vrem să aplicăm această funcție.

06:45.590 --> 06:50.580
Așa vor fi argumentele acestei funcții și, prin urmare, ce va fi.

06:50.600 --> 06:52.780
Desigur, vor fi probele.

06:52.790 --> 06:55.510
Deci al doilea argument aici va fi simbolurile.

06:55.870 --> 06:59.440
Dar apoi să definim funcția pe care dorim să o aplicăm.

06:59.480 --> 07:00.620
Fiecare dintre simboluri.

07:01.040 --> 07:06.890
Deci, pentru a defini o funcție aici trebuie să dăm mai întâi un nume funcției care va numi lambda.

07:07.070 --> 07:14.330
Acesta este un nume și dă Lenda apoi X, care va fi variabila acestei funcții.

07:14.420 --> 07:18.390
Deci, este doar un nume și dăruire pentru variabilă și apoi.

07:18.500 --> 07:24.140
Și aici dăm expresia funcției care este ceea ce ne dorim ca această funcție lambda să

07:25.400 --> 07:32.010
se întoarcă și să vadă ce va fi bine ar trebui să fie ceva care ne va transforma mostrele într-o

07:32.250 --> 07:34.800
variabilă torță și să facem acest lucru.

07:34.800 --> 07:37.370
Am menționat deja acest lucru în câteva tutoriale anterioare.

07:37.560 --> 07:39.880
Ei bine, avem funcția voievodă pentru ei.

07:40.110 --> 07:46.680
Vocea va funcționa vom face conversia de la un dansator torță la o variabilă care va conține senzorul

07:46.690 --> 07:48.590
și cea mai mare.

07:48.810 --> 07:55.830
Deci, primul lucru pe care o voi adăuga aici este variabila variabilă în interiorul căreia voi converti

07:56.010 --> 08:01.540
X deoarece X va fi cele simple care vor fi aplicate pe eșantioane.

08:02.420 --> 08:09.080
Dar atunci este doar un ultim lucru tehnic pe care trebuie să-l implementăm este faptul că

08:09.140 --> 08:15.680
pentru fiecare lot care este cuprins în eșantion, de exemplu lotul de acțiuni a

08:15.680 --> 08:23.080
1 8 2 3 și celelalte acțiuni trebuie să-l concatenăm cu respect pentru primul motor care corespunde statelor.

08:23.120 --> 08:25.380
Și de ce trebuie să facem această concatenare.

08:25.550 --> 08:27.610
Doar pentru ca totul să fie bine aliniat.

08:27.710 --> 08:34.740
Asta este faptul că în fiecare rând pentru a declara acțiunea și recompensa corespunde la același timp ..

08:35.180 --> 08:42.240
Așa că în cele din urmă vom obține o listă de loturi bine aliniate și fiecare lot este o plăcere spre Voivod.

08:42.470 --> 08:44.700
Cum putem face această concatenare.

08:44.840 --> 08:48.030
Ei bine, trebuie să folosim funcția de pisică din biblioteca tortei.

08:48.170 --> 08:55.400
Așa că vom adăuga aici torța la care adăugăm că se aplică aplicației X, dar apoi în această funcție

08:55.400 --> 09:00.820
trebuie să specificăm dimensiunea în legătură cu care vrem să facem această concatenare.

09:00.860 --> 09:05.460
Și cum tocmai am menționat, este primul motor care are epoca de indexare.

09:05.900 --> 09:12.320
Și aici mergem avem funcția noastră gata această Lunda care funcția va lua probele concatenate-le în ceea ce

09:12.320 --> 09:18.110
privește primul motor de timp și apoi în cele din urmă vom converti senzorii în

09:18.110 --> 09:24.230
unele torche variabile care conține atât un tensor și un gradient, aplicați pentru a câștiga în sensul

09:24.230 --> 09:28.610
în care vom putea diferenția pentru a avea ponderi de date.

09:28.610 --> 09:30.170
În regulă, această funcție este gata.

09:30.410 --> 09:35.270
Apoi, aici este al doilea argument al funcției hărții.

09:35.270 --> 09:42.960
Trebuie să precizăm la ce vrem să aplicăm această funcție și care este pe toate mostrele noastre.

09:43.040 --> 09:43.850
Vom merge acolo.

09:43.850 --> 09:50.750
Vom aplica această funcție lambda pe toate eșantioanele, astfel încât în ​​cele din urmă să obținem o listă de meciuri în

09:50.990 --> 09:53.840
care fiecare meci este o pistă PI viabilă.

09:53.840 --> 09:58.810
Bine, deci a fost destul de tehnic, dar acum cel puțin totul va funcționa bine.

09:58.850 --> 10:00.060
Vrem să folosim această tehnică.

10:00.080 --> 10:05.150
Apoi, îl folosim aici doar dacă nu doriți să înțelegeți profund detaliile tehnice aici, că

10:05.150 --> 10:11.060
este bine să copiați aceste trei linii de cod, pentru a vă simți ușor memoria dacă doriți să

10:11.060 --> 10:14.460
faceți o inteligență artificială prin torță așa cum doriți.

10:14.600 --> 10:21.110
Dar acum vestea bună este că am terminat cu această reluare a experienței de reluare a memoriei, acum este implementată

10:21.470 --> 10:26.780
și putem trece la clasa următoare și finală, care va fi întregul mod de securitate.

10:26.960 --> 10:34.520
Deci, în acest model, vom avea, desigur, rețeaua noastră care va experimenta reluarea și apoi tot

10:34.640 --> 10:36.600
restul algoritmului de securitate.

10:36.620 --> 10:39.150
Deci va fi o clasă mult mai mare.

10:39.200 --> 10:44.240
Vom face 10 funcții, dar numai pentru că facem acest pas cu pas, astfel încât să puteți

10:44.240 --> 10:46.130
înțelege mai bine ce se întâmplă.

10:46.520 --> 10:49.260
Așa că nu pot să aștept să pună în aplicare modelul nostru de securitate.

10:49.280 --> 10:50.900
Și până atunci.
