WEBVTT

00:00.330 --> 00:02.280
Hallo en welkom bij deze Python-tutorial.

00:02.550 --> 00:07.110
Nu gaan we de voorwaartse functie maken die het signaal door alle hersenen zal

00:07.110 --> 00:12.960
verspreiden vanaf het allereerste begin met de invoerbeelden tot aan de uitvoer, die de sleutelwaarden voor de acteur en

00:12.960 --> 00:17.660
de waarde die de waarde is, zal bevatten. genomen door de functie van de criticus.

00:18.090 --> 00:21.330
Dus het kan vrij gelijkaardig zijn aan wat we deden voor Doom.

00:21.330 --> 00:23.730
Maar deze keer gaat er iets veranderen.

00:23.740 --> 00:28.560
Het belangrijkste dat gaat veranderen is dat we nu een investering in de hersenen hebben, dus we zullen iets meer

00:28.560 --> 00:32.110
moeten doen om het signaal te verspreiden en daar voorzichtig mee te zijn.

00:32.670 --> 00:38.220
En iets anders dat minder belangrijk is, maar dat nog steeds verandert in vergelijking met voorheen, is

00:38.220 --> 00:43.050
dat we geen RELU-activeringsfunctie gaan gebruiken, zoals, je weet wel, de niet-lineaire activeringsfunctie.

00:43.320 --> 00:48.620
Maar we gaan de ELU gebruiken, wat een meer geavanceerde functie is.

00:48.810 --> 00:51.000
We zullen dat zien in de Python-documentatie.

00:51.750 --> 00:52.650
Dus laten we dit doen.

00:52.800 --> 00:54.180
Laten we deze functie maken.

00:54.180 --> 00:55.560
We beginnen met de def.

00:55.890 --> 00:58.710
Het is eigenlijk de functie van deze activiteitsklasse.

00:59.160 --> 01:02.160
Dus we gaan het naar voren roepen zoals Lichenstein.

01:02.400 --> 01:08.880
En deze voorwaartse functie gaat het object zelf nemen omdat we het object en de invoer gaan

01:08.880 --> 01:09.630
gebruiken.

01:10.020 --> 01:13.090
Het is zo belangrijk om te begrijpen wat deze inputs zullen zijn.

01:13.440 --> 01:19.110
Dit zullen niet alleen de invoerafbeeldingen zijn, deze invoer zal ook de verborgen knooppunten en de celknooppunten

01:19.110 --> 01:20.620
van de verkiezing bevatten.

01:20.970 --> 01:24.320
Daarom wilde ik benadrukken dat er een aantal dingen gaan veranderen.

01:24.330 --> 01:30.030
Nu beschouwen we in de voorwaartse functie de verborgen knooppunten in de celknooppunten van het

01:30.030 --> 01:30.560
systeem.

01:31.020 --> 01:32.100
En over hen gesproken.

01:32.340 --> 01:39.660
Wat we nu gaan doen is deze twee inputs van dit argument scheiden, inputs in de forward-functie, en hoe kunnen

01:40.020 --> 01:41.230
we ze scheiden?

01:41.560 --> 01:45.960
Welnu, we kunnen ons een nieuwe variabele herinneren, namelijk de invoerafbeeldingen.

01:46.080 --> 01:48.450
Dus dat zijn de standaard invoerafbeeldingen.

01:48.720 --> 01:57.490
En we scheiden ze met de tupel H, X en C X, wat een tempel is van de verborgen staat en de celstaat

01:57.510 --> 01:58.830
van de natie.

01:59.250 --> 02:03.510
Dus H x andere toestanden en zes andere toestanden.

02:04.360 --> 02:08.830
Oké, en dat zal gelijk zijn aan de input die dit argument hier is.

02:09.490 --> 02:14.880
Dus nu hebben we de scheiding gemaakt en daarom kunnen we beginnen het signaal door de hersenen te verspreiden.

02:15.010 --> 02:21.040
En om dat te doen, gaan we achtereenvolgens de verschillende lagen van de eerste tot de laatste krijgen

02:21.040 --> 02:22.740
door onze verbindingen te gebruiken.

02:22.750 --> 02:29.860
Dat zijn de windingen, de a. T. M-verbinding en de lineaire verbinding hier, de volledige verbindingen.

02:30.340 --> 02:31.660
Dus laten we dit nu doen.

02:31.660 --> 02:33.300
Het wordt hetzelfde als voorheen.

02:33.550 --> 02:36.790
We gaan onze eerste laag krijgen die we X gaan noemen.

02:37.150 --> 02:43.000
En om deze eerste laag te krijgen, moeten we het signaal van de ingang naar deze eerst daar propageren.

02:43.000 --> 02:48.100
En daarom moeten we de eerste convolutie gebruiken omdat het de eerste convolutie is die het

02:48.100 --> 02:51.460
signaal van de invoerbeelden naar de eerste laag propageert.

02:51.910 --> 02:55.960
Dus wat we nu gaan doen is dit kopiëren, want dit is de eerste winding.

02:56.890 --> 03:03.940
We baseren dat hier en we passen deze eerste convolutie toe op onze invoerbeelden, die nu de juiste invoer

03:03.940 --> 03:04.420
zijn.

03:04.840 --> 03:09.310
En dan krijgen we dat het signaal van de invoerbeelden naar de eerste laag wordt gepropageerd.

03:09.700 --> 03:16.180
Maar onthoud nu dat we een niet-lineaire activeringsfunctie moeten gebruiken om de lineariteit te doorbreken om

03:16.180 --> 03:19.840
de niet-lineaire relaties in de afbeeldingen te leren.

03:20.140 --> 03:25.840
En om dit te doen, gaan we, zoals we zeiden, de ELU-activeringsfunctie gebruiken die we nu op het

03:25.840 --> 03:27.810
pad naar Doug gaan zien.

03:28.030 --> 03:29.770
Maar laten we het eerst hebben.

03:29.980 --> 03:36.220
Dus om het te krijgen, het is net als Relu, we nemen de functionele module, die een snelkoppeling heeft, dan die en dan

03:36.220 --> 03:36.790
een lus.

03:37.420 --> 03:46.000
En dan zetten we dit allemaal tussen haakjes omdat we niet-lineariteit willen activeren de neuronen van deze eerste laag hier die we hebben

03:46.000 --> 03:50.470
verkregen door de eerste convolutie op de ingangen toe te passen.

03:51.010 --> 03:55.510
Dus laten we nu naar de PI in de richting van Doug gaan om te begrijpen welke waarde hier is.

03:55.510 --> 04:03.880
Het is zo dat je er toegang toe hebt tot PI tegen die augustus en dan die HGL en dan moet je niet-lineaire

04:03.880 --> 04:07.990
activeringen vinden en in de niet-lineaire activeringsfunctie die je zult vinden.

04:07.990 --> 04:10.330
Nou, Relu, dat is de klassieke die we kennen.

04:10.570 --> 04:17.080
Dus het is gewoon een maximum van nul en x moet je in gedachten houden, dan heb je Relu zes en dat

04:17.080 --> 04:19.090
is deze, dus een beetje geavanceerder.

04:19.390 --> 04:20.890
En daar gaan we, we gaan kijken.

04:21.370 --> 04:26.250
En zoals je kunt zien, is Allu een RELU plus een extra element.

04:26.440 --> 04:28.950
Dus het is als een meer verfijnde relu.

04:29.170 --> 04:33.850
En dat is dus degene die we gebruiken om niet-lineariteit te activeren, de neuronen in de verschillende lagen te activeren.

04:34.000 --> 04:36.640
En trouwens, er is een lusactiveringsfunctie.

04:36.640 --> 04:38.820
Het heet de exponentiële in hun eenheid.

04:39.370 --> 04:40.150
Dus daar gaan we.

04:40.150 --> 04:46.170
We passen de ELU toe op de eerste convolutionele laag en nu wordt het gemakkelijk.

04:46.210 --> 04:52.210
We gaan verder met de volgende voorwaartse voortplanting van het signaal, dat is van de eerste

04:52.210 --> 04:58.960
convolutionele laag naar de tweede convolutionele laag, die we X gaan noemen, omdat we eigenlijk gewoon X

04:58.960 --> 04:59.710
toevoegen.

05:00.010 --> 05:05.440
Nu is X de eerste convolutionele laag en door het signaal van de eerste convolutionele laag naar

05:05.440 --> 05:08.880
de volgende te verspreiden, wordt X de volgende convolutionele laag.

05:09.340 --> 05:15.070
Om het signaal van de eerste convolutionele laag naar de tweede te verspreiden, kunnen we

05:15.070 --> 05:20.170
dit eenvoudig kopiëren en hier plakken en de huidige vervangen door Konsta.

05:20.320 --> 05:26.500
En nu wordt de tweede convolutie natuurlijk niet toegepast op de invoerbeelden, maar op ex, dat is

05:26.680 --> 05:29.200
de eerste convolutielaag, die hier is.

05:29.650 --> 05:30.610
Oké, perfect.

05:30.640 --> 05:32.530
Nu krijgen we daar onze tweede convolutie.

05:32.800 --> 05:37.780
En laten we nu het signaal weer voortplanten van de tweede convolutie daar naar de derde.

05:38.020 --> 05:45.470
En daarom kunnen we dit en Bassat hier rechtstreeks kopiëren en conv vervangen om drie te worden.

05:45.880 --> 05:51.910
Dan gaan we en nu de laatste om het signaal van de derde convolutionele laag naar de vierde en

05:51.910 --> 05:53.080
laatste te verspreiden.

05:53.380 --> 05:57.260
We kunnen deze basis hier gewoon opnieuw kopiëren en tel drie vervangen.

05:57.280 --> 05:59.260
Maar kom want daar gaan we.

06:00.070 --> 06:01.330
Dus laten we het samenvatten.

06:01.720 --> 06:03.070
We beginnen met onze input.

06:03.310 --> 06:06.700
We passen de eerste convolutie toe om de eerste convolutie daar te krijgen.

06:07.210 --> 06:12.070
Vervolgens passen we de tweede convolutie toe op de eerste convolutionele laag om de tweede convolutionele laag te

06:12.070 --> 06:12.460
verkrijgen.

06:12.820 --> 06:17.770
Vervolgens passen we de derde convolutie toe op de tweede convolutionele laag om de derde convolutionele laag te

06:17.770 --> 06:18.130
verkrijgen.

06:18.370 --> 06:24.580
En tot slot passen we de vierde convolutie toe op de derde convolutionele laag om de vierde convolutionele laag te

06:24.580 --> 06:24.910
verkrijgen.

06:25.360 --> 06:29.530
En zo wordt het signaal door de ogen van het oog verspreid.

06:29.980 --> 06:30.610
Zodat we gaan.

06:30.610 --> 06:35.560
We hebben nu het uitgangssignaal na de vier windingen en nu weet je wat je moet doen.

06:35.560 --> 06:40.600
We moeten dit hele uitgangssignaal uitbreiden in een dimensionale vector.

06:40.750 --> 06:42.310
Dat is de afvlakkingsstap.

06:42.730 --> 06:44.800
Dus we gaan X opnieuw updaten.

06:45.100 --> 06:48.460
X wordt nu deze platte en eendimensionale vector.

06:49.090 --> 06:50.650
En om dit te doen, is dat hetzelfde.

06:50.680 --> 06:59.290
We moeten X nemen, wat tot nu toe de vierde convolutionele laag X is dat we dan de view-functie gebruiken en we zetten

06:59.860 --> 07:03.760
dan eerst min één om te zeggen dat we willen.

07:03.830 --> 07:09.590
Een eendimensionale vector en dan als een tweede argument, moeten we het aantal elementen in deze vector

07:09.590 --> 07:13.220
invoeren en dat is, onthoud, tweeëndertig keer, drie keer drie.

07:13.460 --> 07:16.100
En daarom voeren we hier 30 in.

07:17.040 --> 07:19.470
Drie keer, drie keer.

07:20.130 --> 07:25.080
Daar gaan we, nu hebben we onze afgeplatte vector en de afvlakkingsset is perfect gedaan.

07:25.440 --> 07:27.300
Laten we nu voor de ouderen zorgen.

07:28.140 --> 07:34.680
Dus zoals je hebt begrepen, neemt de verkiezing als invoer de afgeplatte vector, deze eendimensionale vector van drie, twee

07:34.680 --> 07:36.610
keer, drie keer drie elementen.

07:37.050 --> 07:43.110
Het is dus al klaar en goed voorbereid voor de afgelopen 10 jaar en is nu klaar om deze afgeplatte vector als

07:43.110 --> 07:44.040
invoer te nemen.

07:44.370 --> 07:52.830
En daarom kunnen we onze verkiezing en invoer als argument eerst X reeds afgeplatte vector nemen.

07:52.980 --> 07:55.620
Dat is deze röntgenfoto die we zojuist hebben gemaakt.

07:56.130 --> 08:00.430
Maar ook en dat is waar deze problemen in het spel komen.

08:00.720 --> 08:08.640
We moeten H, X en C, X invoeren, en we kunnen X gebruiken en X hier zien omdat we die scheiding hebben

08:08.640 --> 08:12.020
gemaakt van het oorspronkelijke invoerargument van de forward-functie.

08:12.840 --> 08:18.900
Dus Elysium X, de Flatirons output vector tot de vier windingen en dit dubbele van de verborgen in

08:18.900 --> 08:19.710
het celknooppunt.

08:20.370 --> 08:21.090
Dus daar gaan we.

08:21.270 --> 08:27.300
Dan moeten we het zelf niet vergeten, want astm is een variabele van onze functie, dus variabel

08:27.300 --> 08:35.010
aan het object gekoppeld zodat a. T. M en dit zal in feite terugkeren naar outputs van een

08:35.010 --> 08:37.650
paar twee outputs, die de output, verborgen knooppunten en de outputsegmenten zullen zijn.

08:37.740 --> 08:46.560
Het is dus eigenlijk een tuple en daarom kunnen we H X het knooppunt bijwerken en X het celknooppunt zien, want dat is precies de

08:46.590 --> 08:48.780
uitvoer van dit systeem hier.

08:49.910 --> 08:56.120
Geweldig, dus we zijn nu bijna klaar, nu we de outputs van de verkiezing hebben, moeten we de bruikbare

08:56.120 --> 09:01.520
output krijgen, want eigenlijk alleen de Hinden, die zijn nuttig en daarom gaan we het krijgen

09:01.730 --> 09:03.680
door X opnieuw te verkrijgen.

09:04.130 --> 09:06.680
En X is nu gelijk aan ATX.

09:07.220 --> 09:13.570
Het eerste element van de output van alle actie X is gelijk aan het salaris en we zijn bijna klaar.

09:14.150 --> 09:18.380
Onthoud dat we twee hersens hebben, één brein voor de acteur en één brein voor de criticus.

09:18.680 --> 09:24.350
En daarom moeten we signalen uitvoeren om het uitgangssignaal van de acteur en het uitgangssignaal van de criticus terug

09:24.350 --> 09:24.980
te sturen.

09:25.400 --> 09:29.210
En daarom gaan we nu deze twee uitgangssignalen terugsturen.

09:29.360 --> 09:30.500
En hoe kunnen we dat doen?

09:30.650 --> 09:31.840
Nou, dat is heel gemakkelijk.

09:31.880 --> 09:34.970
We moeten gewoon onze lineaire verbindingen nemen.

09:35.330 --> 09:40.480
Maar los daarvan is dat een lineaire verbinding van de criticus en een lineaire volledige verbinding van de acteur.

09:41.000 --> 09:47.810
En we passen elk van deze paar verbindingen toe op de uitgang X, dat is een bruikbare uitgang van GLSEN en dat zal

09:47.810 --> 09:49.920
alles zijn dat het uitgangssignaal zal zijn.

09:50.330 --> 09:50.920
Dus daar gaan we.

09:50.930 --> 09:51.530
Laten we het doen.

09:51.860 --> 09:59.450
We nemen eerst zelf of object, dan krijgen we de lineaire verbinding van de criticus, die criticus is en lineair

09:59.450 --> 10:07.130
wordt genoemd, die we toepassen op X het uitgangssignaal GLSEN en dan Sam, we nemen weer zichzelf, dan dat, en

10:07.130 --> 10:14.240
dan nemen we de lineaire verbinding van de actor, die actor is en lineair wordt genoemd, die we ook

10:14.240 --> 10:15.770
toepassen op X.

10:16.160 --> 10:16.850
Daar gaan we.

10:17.870 --> 10:23.450
Dus dat is het belangrijkste dat we nodig hebben, maar dan gaan we ook de bovenkant van elke extra eindnoot

10:23.450 --> 10:28.760
teruggeven en proberen Noad te verkopen omdat we ze later in de retro-loop van de Estienne zullen gebruiken.

10:29.360 --> 10:30.300
Oké, perfect.

10:30.350 --> 10:34.190
Dus nu zijn we klaar met de hersenen of moet ik zeggen de hersenen?

10:34.190 --> 10:37.750
Omdat we eigenlijk twee hersens hebben gemaakt, een voor de acteur en een voor de criticus.

10:38.090 --> 10:41.640
Dus gefeliciteerd met het maken van de H3C-hersenen.

10:41.960 --> 10:47.900
Ik hoop dat het niet te overweldigend was om een CNN en een verkiezing te combineren, maar het goede nieuws is in ieder

10:47.900 --> 10:50.880
geval dat we echt met het beste en krachtigste model werken.

10:51.170 --> 10:52.750
Dus daar gaan we.

10:52.850 --> 10:56.310
Daarmee zijn we eigenlijk klaar met dit eerste model.

10:56.690 --> 11:02.030
En dus zorg jij in de volgende twee voor de optimizer, want we gaan een aparte

11:02.030 --> 11:02.830
optimizer maken.

11:03.170 --> 11:08.150
We gaan niet elke regel code behandelen, omdat veel ervan uit de onderzoekspapers komt.

11:08.150 --> 11:10.120
En dit is eigenlijk vrij specifiek.

11:10.340 --> 11:16.430
En als we dieper ingaan op wat er aan de hand is met deze optimizer, is dit misschien een

11:16.430 --> 11:22.340
beetje te overweldigend voor wat er gaat gebeuren, omdat we nog de treinfunctie moeten maken, wat een

11:22.340 --> 11:23.810
enorme functie zal zijn.

11:23.960 --> 11:26.630
En dat bevat het algoritme dat de see.

11:26.900 --> 11:31.730
Dus geloof me, daar wil je wat energie voor overhouden en daarom gaan we hier niet te veel tijd aan

11:31.730 --> 11:32.060
besteden.

11:32.360 --> 11:37.450
Maar toch, ik zal de code uitleggen en je zult het hele idee achter deze optimizer begrijpen.

11:38.060 --> 11:43.670
Dus nogmaals gefeliciteerd met het maken van deze Altikriti-klasse, en ik zie je bij de volgende zwoegen om de optimizer

11:43.670 --> 11:44.270
te maken.

11:44.570 --> 11:45.900
Tot dan, geniet ervan.
