WEBVTT

00:00.150 --> 00:02.140
Hallo en welkom bij deze Python-tutorial.

00:02.550 --> 00:08.130
Nu moeten we de vijf variabelen van deze init-functie definiëren, dat wil zeggen de drie windingen

00:08.130 --> 00:09.180
en de Tufo-verbindingen.

00:09.690 --> 00:10.890
Dus laten we beginnen met de eerste.

00:11.100 --> 00:18.630
Convolutionele men past convolutie toe op de invoerbeelden zodat de originele afbeeldingen en nu ga je zien hoe alles

00:18.630 --> 00:22.600
zo eenvoudig zal worden om deze convolutie te creëren.

00:22.620 --> 00:29.010
Welnu, wat we moeten doen, is een object van een specifieke klasse maken en deze klasse wordt

00:29.010 --> 00:32.220
van hen overgenomen en dan komen de klassen.

00:33.070 --> 00:40.480
Naar t t omdat we met de afbeeldingen werken en nu, zoals je kunt zien, moeten we verschillende argumenten aanvoeren.

00:40.780 --> 00:45.250
De eerste is in kanalen, dus laten we het in kanalen plaatsen.

00:45.850 --> 00:48.550
De tweede is uit kanalen.

00:49.210 --> 00:56.110
De derde is Colonel Size, en de rest is het beste voor de opvulling, de vertraging in groepen en

00:56.110 --> 00:56.800
vooringenomenheid.

00:56.980 --> 00:58.960
En we hebben standaardwaarden voor al deze.

00:59.110 --> 01:00.460
Die gaan we dus niet opleggen.

01:00.460 --> 01:02.080
We gaan de standaardwaarden behouden.

01:02.350 --> 01:07.390
Maar wat belangrijk is, zijn deze drie argumenten in kanalen en kanalen en valuta's.

01:07.540 --> 01:09.480
En dus raad je waar ze mee overeenkomen?

01:09.730 --> 01:15.580
Nou, heel eenvoudig in kanalen komen overeen met de invoer van de convolutie en alle kanalen komen overeen met

01:15.580 --> 01:17.440
de uitvoer van de convolutie.

01:17.800 --> 01:19.630
Dus in kanalen, wat gaat het worden?

01:19.930 --> 01:24.160
Nou, heel eenvoudig, dat wordt het aantal kanalen in onze afbeeldingen.

01:24.430 --> 01:29.680
En eigenlijk gaan we werken met zwart-wit beelden omdat we in principe geen kleuren nodig hebben om

01:29.680 --> 01:31.030
de monsters te herkennen.

01:31.300 --> 01:35.080
De gegevens zijn volledig in staat om de monsters in zwart-wit te herkennen.

01:35.320 --> 01:36.610
Dus we hebben de kleuren niet nodig.

01:36.790 --> 01:41.410
Het zal ze gewoon herkennen aan hun vorm en daarom gaan we één kanaal gebruiken.

01:41.590 --> 01:45.940
Dus één kanaal is wanneer je zwart-wit afbeeldingen hebt en drie kanalen is wanneer je gekleurde afbeeldingen

01:45.940 --> 01:46.450
hebt.

01:46.750 --> 01:51.100
En daarom, aangezien we met zwart-witafbeeldingen in kanalen werken, zal het gelijk zijn aan

01:51.100 --> 01:51.520
één.

01:52.620 --> 01:59.660
Dan onze kanalen, dus onze kanalen zullen gelijk zijn aan de afbeeldingen die je wilt hebben in de convolutionele

01:59.670 --> 02:02.640
daar, wat de output is van deze convolutie.

02:02.790 --> 02:08.760
Dit is in feite gelijk aan het aantal kenmerken dat u in uw originele afbeeldingen wilt detecteren, omdat we

02:09.120 --> 02:14.370
één afbeelding per kenmerk maken dat we willen detecteren, omdat u in feite weet hoe het

02:14.370 --> 02:14.750
werkt.

02:14.940 --> 02:21.330
We passen één kenmerkdetector toe op het invoerbeeld om een specifiek kenmerk in het invoerbeeld en dus het

02:21.330 --> 02:23.010
aantal uitvoerbeelden te detecteren.

02:23.010 --> 02:25.740
Dit is het aantal functies dat we willen detecteren.

02:26.310 --> 02:29.820
Dus nu is de vraag, hoeveel functies willen we detecteren?

02:30.090 --> 02:34.440
Welnu, het is gebruikelijk om te beginnen met 32 functiedetectoren.

02:34.920 --> 02:41.020
En dat leidt ons naar 32 procent afbeeldingen in deze eerste convolutionele laag.

02:41.340 --> 02:45.510
De invoer is dus één zwart-wit beeld, een echt beeld.

02:45.780 --> 02:51.090
En de uitvoer in de eerste convolutionele laag is 32 bewerkte afbeeldingen.

02:51.270 --> 02:57.150
En met verwerkt bedoel ik natuurlijk dat de convolutie werd toegepast op het invoerbeeld om tweeëndertig nieuwe

02:57.150 --> 02:59.310
beelden te krijgen die kenmerken detecteerden.

03:00.060 --> 03:06.300
En dan moeten we een kernelgrootte specificeren, die niets anders is dan de afmetingen van het vierkant

03:06.510 --> 03:09.150
dat door de originele afbeelding gaat.

03:09.420 --> 03:15.080
En in de praktijk gebruiken we ofwel twee bij twee of drie bij drie of vijf bij vijf.

03:15.480 --> 03:20.540
En voor de eerste gaan we een vijf bij vijf kenmerkende detector gebruiken.

03:20.970 --> 03:26.490
Dat is een feature-detector die vijf bij vijf dimensies zal hebben en dan zullen we de grootte van deze

03:26.490 --> 03:28.750
kernel verkleinen voor de volgende convolutionele lagen.

03:29.160 --> 03:32.030
En nu we het er toch over hebben, dit is precies wat we nu gaan doen.

03:32.190 --> 03:37.230
We gaan dit kopiëren om de tweede convolutie te definiëren.

03:37.860 --> 03:40.800
En daarom plaats ik dat hier en nu.

03:40.800 --> 03:42.080
Het is heel grappig en heel gemakkelijk.

03:42.090 --> 03:43.050
Het is als een dominosteen.

03:43.380 --> 03:49.510
Het ingangskanaal van de tweede convolutionele laag is het uitgangskanaal van de eerste convolutionele daar.

03:49.830 --> 03:53.790
Dus dit aantal outputs, tweeëndertig hier is hetzelfde aantal inputs.

03:54.120 --> 03:55.040
Tweeëndertig hier.

03:55.260 --> 04:00.950
En dat komt omdat we tweeëndertig afbeeldingen hebben in de invoerconvolutielaag van de tweede convolutie.

04:01.260 --> 04:10.080
En dus wordt de tweede convolutie toegepast op deze tweede convolutionele laag om een derde convolutionele laag terug te geven.

04:10.350 --> 04:13.110
En dus is nu de vraag hoeveel nieuwe afbeeldingen we willen.

04:13.290 --> 04:13.840
Nou, hetzelfde.

04:13.860 --> 04:15.750
Laten we 32 nieuwe afbeeldingen maken.

04:15.870 --> 04:19.760
Tweeëndertig is eigenlijk een veel voorkomend getal in convolutionele neurale netwerken.

04:19.770 --> 04:23.420
Als je naar de architecturen kijkt, zul je er in veel ervan tweeëndertig vinden.

04:23.850 --> 04:27.930
En dan voor de kernelgrootte, nou ja, we moeten de kernelgrootte verkleinen.

04:27.930 --> 04:30.340
Dat zijn de afmetingen van onze feature detector.

04:30.570 --> 04:37.150
En dus gaan we nu van vijf naar vier of zelfs drie en dan gaan we nog kleiner.

04:37.740 --> 04:38.100
Oke.

04:38.100 --> 04:40.250
Dus onze tweede convolutie is klaar.

04:40.650 --> 04:48.120
Het heeft als invoer nodig om afbeeldingen te verwerken, waarbij elk een eerste kenmerk van het originele invoerbeeld detecteert.

04:48.480 --> 04:54.430
En het creëert 32 nieuwe afbeeldingen dankzij deze kleinere afmetingen van de feature-detector.

04:54.960 --> 04:57.060
En dus laten we dit nu nog meer pushen.

04:57.150 --> 05:04.900
Dus ik kopieer dit en plak dat hier om een derde convolutie te maken om enkele functies te detecteren.

05:05.310 --> 05:07.940
En dus nu is dat hetzelfde de ingangskanalen.

05:07.950 --> 05:12.660
Hier is het aantal invoerbeelden aan de linkerkant van de convolutieverbinding.

05:12.780 --> 05:17.640
En er is een aantal bewerkte afbeeldingen die rechts van de vorige convolutieverbindingen stonden.

05:17.670 --> 05:18.570
Dat is tweeëndertig.

05:18.600 --> 05:19.950
Daarom houden we hier tweeëndertig.

05:19.950 --> 05:20.670
Dat is perfect.

05:21.030 --> 05:24.770
En nu is de vraag opnieuw, hoeveel nieuwe beelden willen we detecteren?

05:25.170 --> 05:30.840
We gaan nu 64 in, dus 64 outputs, verwerkte beelden nemen.

05:31.050 --> 05:35.990
En natuurlijk nemen we nu een kleinere kernelgrootte en we gaan er twee nemen.

05:36.630 --> 05:40.560
En dat is dus een zeer klassieke architectuur van een convolutionele daar.

05:40.860 --> 05:45.360
En het is zeer efficiënt om een hoog niveau van functiedetectie in afbeeldingen te hebben.

05:46.050 --> 05:46.550
Oke.

05:46.560 --> 05:52.950
En dus nu we onze drie convolutionele connecties daar hebben, dankzij onze drie convolutionele connecties hier, nou, nu is

05:52.950 --> 05:57.360
het tijd om onze twee volledige connecties te krijgen die ik eraan herinner.

05:57.360 --> 06:04.860
We nemen deze enorme vector die we verkrijgen na het afvlakken van alle 64 keer, 32 keer, 32 keer, afbeeldingen die

06:04.860 --> 06:07.650
we van al deze windingen hebben gekregen.

06:08.040 --> 06:14.280
Dus we vlakken alle pixels van deze afbeeldingen af en we kunnen één enorme vector maken die de invoer wordt van

06:14.280 --> 06:16.270
een nieuw volledig verbonden neuraal netwerk.

06:16.680 --> 06:21.780
En dat is het moment waarop we deze paar verbindingen moeten maken tussen, eerst, deze enorme vector

06:21.780 --> 06:27.300
en een verborgen laag en dan een tweede volledige verbinding tussen de verborgen laag en de uitvoerlaag die

06:27.300 --> 06:31.410
bestaat uit de uitvoerneuronen, elk corresponderend met een kubuswaarde van de mogelijke acties.

06:31.850 --> 06:33.800
Dus laten we deze twee volledige verbindingen maken.

06:33.810 --> 06:35.060
Je weet hoe je dat moet doen.

06:35.070 --> 06:37.260
Dat is precies wat we deden voor de zelfrijdende auto.

06:37.500 --> 06:38.470
Dus laten we dat nog een keer doen.

06:38.820 --> 06:41.160
Nou, eerst nemen we onze end in module.

06:41.670 --> 06:48.100
Dan nemen we de lineaire klasse, want nogmaals, de volledige verbinding die we maken is een object van de lineaire

06:48.190 --> 06:48.630
klasse.

06:49.080 --> 06:52.130
En dan tussen haakjes, nou, dat is hetzelfde voor ons.

06:52.240 --> 07:00.340
Voer de invoerfuncties in, dat is het aantal, dan de uitvoerfuncties en dus de invoerfuncties voor de

07:00.340 --> 07:02.000
eerste volledige verbinding.

07:02.020 --> 07:02.800
Wat gaat het worden?

07:03.190 --> 07:09.610
Nou, dat zal gelijk zijn aan het aantal pixels in deze enorme vector, verkregen na het afvlakken

07:09.610 --> 07:13.200
van alle verwerkte afbeeldingen na de drie windingen.

07:13.660 --> 07:14.770
En wat is dit nummer dan?

07:15.070 --> 07:16.870
Nou, eigenlijk is er hier een truc.

07:17.230 --> 07:19.230
Dit nummer is eigenlijk moeilijk te krijgen.

07:19.510 --> 07:22.520
We moeten eigenlijk een functie maken om dat getal te berekenen.

07:22.810 --> 07:25.490
We hebben geen variabele die ons dit nummer geeft.

07:25.510 --> 07:26.520
We moeten het berekenen.

07:26.800 --> 07:32.470
En daarom, wat we nu en nu gaan doen, is het erg belangrijk om de mentaliteit van programmeren te

07:32.470 --> 07:38.290
begrijpen die we moeten hebben en proberen te brengen tot de mentaliteit die je nu moet denken om dit obstakel

07:38.290 --> 07:43.690
te overwinnen, want de eerste keer dat je zou kunnen zeggen, hey, ik heb niet dit aantal neuronen

07:43.690 --> 07:46.360
in de afgeplatte vector, wat moet ik doen?

07:46.480 --> 07:47.300
Ik zit hier vast.

07:47.650 --> 07:54.790
Nou, nee, eigenlijk, want wat je nu kunt doen is hier gewoon alles invoeren dat dit

07:54.790 --> 07:56.140
aantal neuronen vertegenwoordigt.

07:56.150 --> 07:59.020
Dus ik noem het aantal neuronen, aantal neuronen.

07:59.470 --> 08:05.620
En dan zullen we gewoon een functie maken die in dit aantal neuronen variabele zal terugkeren, dit aantal pixels waarnaar we

08:05.620 --> 08:06.840
op zoek zijn.

08:07.210 --> 08:08.790
Dat kunnen we dus helemaal.

08:08.800 --> 08:10.520
We kunnen deze variabele volledig plaatsen.

08:10.540 --> 08:15.880
Nou, natuurlijk krijgen we een waarschuwing omdat het nog niet bestaat, maar we zullen het daarna maken

08:16.030 --> 08:20.750
met een functie en dat is helemaal toegestaan, zelfs als de functie daarna komt.

08:20.980 --> 08:25.640
Dus dat is een typisch programmeerdenken dat je moet hebben als je dat soort obstakels tegenkomt.

08:25.840 --> 08:28.600
Nou, je kunt een functie maken om te krijgen wat je mist.

08:29.560 --> 08:29.970
Oke.

08:29.980 --> 08:36.130
En dan functies eruit en functies eruit dat het aantal neuronen in de verborgen laag en dat deze

08:36.130 --> 08:37.540
keer aan jou is.

08:37.720 --> 08:40.750
Dat hangt af van de architectuur van het neurale netwerk dat je wilt creëren.

08:41.080 --> 08:44.040
En dus zou een goed aantal geen klein aantal zijn.

08:44.080 --> 08:46.900
Dus bijvoorbeeld 40 neuronen kunnen prima zijn.

08:46.900 --> 08:48.430
We kunnen proberen het te vergroten.

08:48.610 --> 08:50.980
Als de training niet te langzaam is, kun je proberen deze te verhogen.

08:51.160 --> 08:53.350
Misschien dat dat de voorspellingen verbetert.

08:53.650 --> 08:54.750
Maar laten we beginnen met 40.

08:54.760 --> 08:56.260
Misschien verhogen we dat daarna.

08:56.950 --> 08:57.360
Oke.

08:57.400 --> 08:59.590
Dat was het voor de eerste volledige verbinding.

08:59.920 --> 09:05.280
Dan kopiëren we dit met de afbeelding naar beneden hier voor de tweede volledige verbinding.

09:05.290 --> 09:08.860
Dat is de verbinding tussen de verborgen laag en de uitvoerlaag.

09:09.160 --> 09:15.560
En dus worden de kenmerken hier de buitenste kenmerken van de vorige laag, en dat is 40.

09:15.640 --> 09:17.620
U voert dus 40 in.

09:18.040 --> 09:20.230
Dat is natuurlijk het aantal neuronen in de verborgen laag.

09:20.680 --> 09:26.920
En onze functies hier zullen gelijk zijn aan het aantal output-neuronen dat er in ons netwerk zou moeten zijn.

09:27.130 --> 09:33.310
En aangezien elk outputneuron overeenkomt met één sleutelwaarde en één Kovalik-reactie op één actie, terwijl het

09:33.310 --> 09:38.890
aantal neuronen hier natuurlijk het aantal acties is en we hiervoor één variabele hebben, dat

09:38.890 --> 09:41.890
is geen acties en daarom hier invoer.

09:42.160 --> 09:42.790
Nee.

09:43.800 --> 09:50.960
Acties en daar gaan we, gefeliciteerd, we hebben de architectuur van ons neurale netwerk gedefinieerd, ons neurale

09:50.970 --> 09:55.670
netwerk is samengesteld uit drie convolutionele lagen en een verborgen laag.

09:55.950 --> 10:02.700
Dit alles in één grote CNN en deze CNN zal de functies in het spel detecteren, zodat het oog weet waar het

10:02.730 --> 10:06.150
moet doen, waar het heen moet en waar het moet schieten.

10:06.750 --> 10:08.040
Dus daar gaan we voor deze stap.

10:08.190 --> 10:10.210
Dat is een eerste zeer belangrijke stap gezet.

10:10.500 --> 10:15.870
Nu gaan we naar de volgende stap, en dat is natuurlijk om dit aantal neuronen te krijgen dat nog

10:15.870 --> 10:16.710
steeds ontbreekt.

10:16.860 --> 10:21.600
Dat is eigenlijk waar we de waarschuwing hier hebben en het uiteindelijke aantal neuronen binaries.

10:21.810 --> 10:26.910
Nu zullen we een functie maken die het aantal neuronen in deze enorme vector zal teruggeven en we zullen dat

10:26.910 --> 10:29.800
aantal in een variabele plaatsen die het aantal neuronen zal oproepen.

10:30.120 --> 10:31.930
Dus laten we dit de komende tijd doen.

10:31.950 --> 10:32.980
Dat is onze volgende stap.

10:33.000 --> 10:34.420
En tot die tijd, geniet ervan.
