WEBVTT

00:00.330 --> 00:02.350
Hallo en welkom bij deze tutorial.

00:02.790 --> 00:08.610
Nu gaan we deze tweede functie maken om de gewichten te initialiseren, en deze zal

00:08.910 --> 00:12.260
worden gebruikt om deze gewichten optimaal te leren.

00:13.110 --> 00:16.860
Dus de tweede functie, we gaan het gewichten noemen.

00:17.970 --> 00:25.680
Onderstreep het, en het zal als argument het object nemen en dat het nieuwe netwerk zal vertegenwoordigen.

00:26.070 --> 00:26.770
Dus dat is alles.

00:26.910 --> 00:32.000
En dan Colin en laten we nu in de functie gaan om te definiëren wat we wilden doen.

00:32.430 --> 00:38.430
Dus eigenlijk willen we dat het de gewichten van het nieuwe netwerk op zo'n manier initialiseert dat

00:38.430 --> 00:39.610
we optimaal leren.

00:39.960 --> 00:43.420
Dit zal dus niet bijzonder intuïtief lijken.

00:43.440 --> 00:46.400
Dit is gebaseerd op onderzoekspapers en experimenten.

00:46.590 --> 00:50.910
We gaan de gewichten initialiseren op een specifieke manier die we nog niet eerder hebben gezien.

00:51.120 --> 00:54.350
Maar geloof me, dat zal het leerproces optimaliseren.

00:54.780 --> 01:00.150
We zullen het dus gewoon implementeren zonder in te gaan op de details waarom we de gewichten op deze manier

01:00.150 --> 01:00.480
initialiseren.

01:00.750 --> 01:06.270
En dus gaan we beginnen met het gebruik van een truc die later zal worden gebruikt om het

01:06.510 --> 01:13.210
onderscheid te maken tussen de convolutie en de volledige verbinding, want, weet je, onthoud of ik zal ogen hebben en daarom zal

01:13.210 --> 01:14.880
het enkele convolutionele lagen hebben.

01:15.150 --> 01:17.820
En natuurlijk zal het ook enkele volledig verbonden lagen hebben.

01:18.030 --> 01:23.240
En we zullen een andere initialisatie van het gewicht hebben voor deze twee soorten verbindingen.

01:23.670 --> 01:28.590
Dus we gaan deze truc gebruiken om deze twee soorten verbindingen te scheiden en dan zullen

01:28.590 --> 01:33.390
we enkele if-voorwaarden gebruiken om een andere initialisatie voor elk van deze verbindingen te krijgen.

01:34.020 --> 01:40.290
Deze truc is dus om een nieuwe variabele te maken die we een klassenaam gaan noemen en die

01:40.290 --> 01:42.630
gelijk zal zijn aan een object.

01:42.660 --> 01:45.760
Dus M vertegenwoordigt het neurale netwerk, maar het is een object.

01:45.780 --> 01:46.740
Dat zullen we later zien.

01:47.220 --> 01:53.910
En we gaan een speciaal attribuut krijgen van dit object, dat zal de klassenaam zijn met dubbel op deze

01:53.910 --> 02:01.440
kern, eerste klasse, dubbel op deze kern, dat dubbel in de kern opnieuw naam en bijna daar, nog een dubbel in

02:01.450 --> 02:02.780
de score .

02:03.240 --> 02:09.360
Dus dat is een behoorlijk lelijke truc om te zoeken naar het type verbinding van ons neurale netwerkobject.

02:09.570 --> 02:11.740
Maar dat geeft ons precies wat we willen.

02:12.030 --> 02:15.090
Je zult zien dat het zinvol is als we beginnen als de omstandigheden.

02:15.360 --> 02:19.240
Trouwens, over voorwaarden gesproken, we kunnen ze nu meteen opslaan.

02:19.500 --> 02:25.920
Dus wat we nu gaan doen, is een eerste if-voorwaarde starten, waarmee we de eerste casus krijgen, dat wil

02:26.100 --> 02:28.950
zeggen als de verbinding een convolutie is.

02:29.340 --> 02:33.150
Om deze voorwaarde recht te zetten, schrijven we if class name.

02:34.200 --> 02:44.820
Dat is prima, hier gebruiken we een methode, de fine-methode find, en binnenin zetten we aanhalingstekens voor convolutie en dus

02:45.090 --> 02:52.650
als de klassenaam die boete komt, gaan we het anders doen dan min één.

02:52.890 --> 02:57.440
Dat is eigenlijk als we een convolutie hebben, want min één betekent nee.

02:58.050 --> 03:02.620
Welnu, in dat geval zullen we een speciale initialisatie van de gewichten doen.

03:03.270 --> 03:07.040
Dus deze voorwaarde betekent hier dat we een convolutieverbinding hebben.

03:07.680 --> 03:13.680
Dus in dat geval voeren we deze specifieke initialisatie uit van de gewichten die we willen doen.

03:13.830 --> 03:17.610
En dat is waar alle niet-intuïtieve dingen zullen komen.

03:17.940 --> 03:23.160
We beginnen met het maken van een variabele die we gewichten en deze vorm gaan noemen.

03:24.030 --> 03:30.570
Dus wacht op deze vorm zal een lijst zijn die in feite de vorm van het gewicht in ons

03:30.570 --> 03:36.680
neurale netwerk zal bevatten en dus gaan we de lijstfunctie gebruiken om een lijst binnenin te maken.

03:36.690 --> 03:43.400
We gaan dat gewicht invoeren in het neurale netwerk, wat de gewichten van het neurale netwerk zullen

03:43.410 --> 03:45.780
zijn, maar dan in de convolutieverbinding.

03:46.350 --> 03:54.210
En om de vorm van deze gewichten te krijgen, gebruiken we een ander attribuut, namelijk dat gegevens en vervolgens groottegrootte ons de

03:55.200 --> 03:58.890
vorm van deze gewichten in de convolutieverbinding zal geven.

03:59.520 --> 04:06.540
Dus nu bevat Weight Shape in een lijst de vorm van de gewichten in de convolutieverbindingen van ons neurale

04:06.540 --> 04:07.410
netwerk en.

04:08.280 --> 04:14.670
Oké, dus we hebben een vorm, om de gewichten van deze convolutieverbinding te initialiseren, we

04:14.670 --> 04:21.810
moeten eerst de waarden hebben, het product van de eerste dimensie door de tweede dimensie, door de

04:21.810 --> 04:22.750
derde dimensie.

04:22.770 --> 04:24.270
Dus dat is wat we nu gaan krijgen.

04:24.690 --> 04:30.180
En dan zullen we ook de Xeros-dimensie tijden moeten krijgen, de tweede dimensie maal de derde dimensie.

04:30.330 --> 04:35.160
En dan zullen we deze twee waarden gebruiken bij de berekening van hoe we de gewichten initialiseren.

04:35.550 --> 04:43.830
Dus laten we deze naar dit eerste product brengen waar we het in noemen, en dat zal gelijk zijn aan het product.

04:44.100 --> 04:49.650
En we gaan de prod-functie gebruiken, een functie van non-pay, die een sneltoets enpi heeft.

04:50.070 --> 04:51.750
Dus enpi die froud.

04:52.640 --> 04:56.360
En binnenin voeren we in waar we het product van willen maken.

04:57.020 --> 05:02.380
En dus, zoals we al zeiden, dat is de dimensie één, twee en drie van onze gewichtsvorm.

05:02.690 --> 05:10.300
Om dit te krijgen, kunnen we een gewichtsvorm nemen en de indexen van deze drie dimensies krijgen.

05:10.310 --> 05:15.530
En dus zeiden we dat het dimensie één tot en met dimensie drie was.

05:15.890 --> 05:18.550
Dus twee, dimensie vier uitgesloten.

05:18.860 --> 05:23.780
En zo kunnen we het krijgen want de bovengrens is hier niet meegerekend.

05:24.260 --> 05:26.300
Dus dat is precies wat we dan willen.

05:26.300 --> 05:28.640
Idem voor fan-out.

05:30.670 --> 05:39.100
Zoals we al zeiden, zal uitwaaieren het product zijn van de dimensie nul maal dimensie tot dimensie drie.

05:39.550 --> 05:45.270
En dus kunnen we hier de index krijgen van twee inbegrepen naar vier uitgesloten.

05:45.580 --> 05:48.600
Dus dat levert ons het product van dimensie twee en drie op.

05:49.000 --> 05:58.510
En dan kunnen we het vermenigvuldigen met de dimensie nul, waartoe we toegang hebben met witte vorm nul van index nul.

05:59.080 --> 06:08.950
Dus om samen te vatten, dit is de ene keer in de twee keer in de drie en.

06:10.050 --> 06:11.490
Net onder, hebben we.

06:13.120 --> 06:13.910
Dem nul.

06:14.860 --> 06:19.750
Tijden tot tijden in van onze wachtlijst van wachten.

06:20.170 --> 06:25.300
Oké, dus nu gaan we deze twee waarden gebruiken, Fenning, en ontdekken om door te gaan

06:25.750 --> 06:30.820
met de initialisatie, omdat we een nieuwe waarde gaan berekenen die we W-gebonden gaan noemen.

06:31.000 --> 06:38.000
En dat zal gelijk zijn aan de vierkantswortel, die we kunnen krijgen met de functie en P van

06:38.140 --> 06:40.450
dan door die beveiligingssectie ervoor.

06:40.700 --> 06:52.070
Dus de vierkantswortel van zes gedeeld door uitwaaieren dus waaier en plus ontdek dat we gaan.

06:52.570 --> 06:57.660
Dus deze w hier vertegenwoordigt op de een of andere manier de grootte van de tienden van gewichten.

06:58.060 --> 06:59.290
En waarom hebben we dit gekregen.

06:59.560 --> 07:06.070
Het is omdat wat we toen net gingen doen, is dat we een aantal willekeurige gewichten willen genereren

07:06.070 --> 07:11.710
die omgekeerd evenredig zijn met de grootte van het zwaartepunt, want inderdaad wat we nu

07:11.710 --> 07:14.920
gaan doen is ons nieuwe netwerk nemen en.

07:16.060 --> 07:24.220
Dan krijgt het zijn gewicht, dus door nog steeds het attribuutgewicht te nemen, dan zegt het zijn gegevens, dat is de

07:24.250 --> 07:25.030
sensor zelf.

07:25.910 --> 07:33.260
En dan gaan we vanuit dit zwaartepunt enkele willekeurige gewichten genereren die omgekeerd evenredig zijn met de

07:33.260 --> 07:36.050
grootte van de Tenzer van gewichten.

07:36.990 --> 07:45.450
En dus moeten we in deze uniforme functie nu een ondergrens zetten, die min W-grens zal zijn en de bovengrens,

07:45.450 --> 07:48.390
die plus W bounce zal zijn.

07:49.600 --> 07:57.380
OK, dus voor de gewichten en nu moeten we de bias en goed nieuws voor de bias initialiseren.

07:57.390 --> 07:58.730
Het wordt veel eenvoudiger.

07:59.040 --> 08:01.920
We gaan ze allemaal initialiseren met nullen.

08:02.900 --> 08:10.580
Dus om deze aankopen te krijgen, nemen we ze natuurlijk uit ons model, dat is ons normale netwerk en dan is het

08:10.580 --> 08:17.180
kenmerk voor de kopers kopers, dan hebben we toegang tot de gegevens en dan gaan we een methode

08:17.180 --> 08:24.560
gebruiken, die is de film en de scoremethode, die, zoals je misschien al geraden had, wordt gebruikt om de Tenzer van

08:24.740 --> 08:26.810
kopers met nullen te vullen.

08:27.170 --> 08:31.110
Welnu, met nullen moeten we specificeren dat we het hier met nullen willen vullen.

08:31.520 --> 08:33.830
En daarom voer ik hier nul in.

08:34.400 --> 08:34.760
Oke.

08:34.770 --> 08:40.580
Dus om samen te vatten, we genereren enkele willekeurige woorden die omgekeerd evenredig zijn met de grootte van het

08:40.580 --> 08:43.140
zwaartepunt, en we initialiseren het apparaat met nullen.

08:43.700 --> 08:44.050
Oke.

08:44.060 --> 08:49.190
Dat was dus voor de initialisatie van de convolutieverbindingen.

08:49.640 --> 08:52.510
En nu moeten we hetzelfde doen voor de volledige verbinding.

08:53.120 --> 08:55.250
En dus gaan we een nieuwe voorwaarde toevoegen.

08:55.700 --> 09:00.680
En als hetzelfde, we nemen deze truc, we gebruiken de eerste klas naam.

09:01.160 --> 09:04.680
Dat is deze variabele die de verschillende namen van de verbindingen bevat.

09:05.030 --> 09:08.990
Dus als de lestijd hetzelfde is, gebruiken we een gedefinieerde methode.

09:10.180 --> 09:17.500
Waarop we deze keer tussen aanhalingstekens een volledige verbinding zetten die een klassieke lineaire verbinding is in een klassiek

09:17.500 --> 09:18.680
kunstmatig neuraal netwerk.

09:19.210 --> 09:27.100
De naam daarvoor is lineair en zeggen dat we deze truc gaan gebruiken om te zeggen dat we willen dat

09:27.100 --> 09:29.860
het anders is dan min één.

09:31.070 --> 09:38.750
Zodat deze zelfde boete uiteindelijk anders is dan min één betekent, als de verbinding de spijker is, dat is als we

09:38.930 --> 09:40.740
een klassieke voedselverbinding hebben.

09:41.210 --> 09:44.210
Dus in dat geval, hoe gaan we het gewicht initialiseren?

09:44.690 --> 09:47.070
Nou, het zal ongeveer hetzelfde zijn.

09:47.140 --> 09:53.940
We gaan een gewichtsvariabele introduceren die de eerste niet zal wissen, omdat we in dit of dat

09:53.940 --> 09:55.460
geval zullen zijn.

09:55.470 --> 09:57.010
Het zal dus niet hetzelfde zijn.

09:57.020 --> 10:01.250
Dus dat kunnen we dan weer helemaal hergebruiken.

10:01.250 --> 10:08.240
We gaan een ventilator in variabele introduceren, die deze keer niet gelijk zal zijn aan het product van deze

10:08.240 --> 10:09.190
drie dimensies.

10:09.530 --> 10:13.340
Maar eigenlijk zal het deze keer gelijk zijn aan gewoon.

10:15.210 --> 10:22.800
Had ik er al een genoemd en dat komt omdat er voor de volledige verbinding minder verbindingen zijn dan bij een

10:22.800 --> 10:23.300
convolutieverbinding.

10:23.700 --> 10:29.400
Weet je, je zag dit in de intuïtieve lezingen in de CNN en de CNN's. Er is minder dimensie voor een volledige

10:29.400 --> 10:31.870
verbinding dan voor een convolutie.

10:32.490 --> 10:39.540
Dus eigenlijk nemen we deze dimensie een jaar, dan zullen we het heel goed moeten ontdekken, die dan

10:39.540 --> 10:42.450
zal worden gebruikt om w-grenzen te berekenen.

10:43.050 --> 10:49.730
En deze laatste dimensie wordt de gewichtsvorm van index nul.

10:49.740 --> 10:51.120
Dat is de dimensie nul.

10:51.330 --> 10:54.800
Goed dan om te berekenen dat het hetzelfde zal zijn.

10:55.320 --> 11:04.250
Het wordt de vierkantswortel van zes gedeeld door de som van de overtreding en waaier uit zodat we gaan.

11:04.710 --> 11:09.360
En dan is het goede nieuws dat het precies hetzelfde is als voorheen.

11:10.050 --> 11:18.180
We gebruikten een uniforme functie voor de gewichten en de voelfunctie voor de bias om dezelfde soort initialisatie te krijgen,

11:18.360 --> 11:23.670
deze keer met een andere bevinding en uitwaaiering en dus een andere W.

11:24.420 --> 11:26.070
Dat is dus hetzelfde principe.

11:26.070 --> 11:27.040
Dat is hetzelfde idee.

11:27.360 --> 11:32.640
Het enige dat hier verandert, is dat we minder dimensies hebben voor de volledige verbinding en

11:32.640 --> 11:37.980
daarom een eenvoudigere berekening van deze grens van de gewichten hebben om deze willekeurige gewichten te genereren.

11:39.040 --> 11:46.060
Maar het goede nieuws is dat het nu klaar is, niet alleen dit wachten en de functie is klaar, maar nu hebben we onze tools en

11:46.060 --> 11:49.770
dus zijn we klaar om te beginnen met het bouwen van de hersenen.

11:50.140 --> 11:51.140
Dus ik kan niet wachten.

11:51.160 --> 11:53.140
Dit wordt natuurlijk het spannendste deel.

11:53.350 --> 11:57.220
Dit was gewoon om op te warmen en ons klaar te maken voor het grote ding.

11:57.520 --> 11:59.740
Dus daar zullen we in de volgende tutorial voor zorgen.

11:59.890 --> 12:01.680
Nou, eigenlijk zijn er verschillende tutorials voor nodig.

12:01.690 --> 12:04.180
Natuurlijk beginnen we met het maken van de ogen.

12:04.330 --> 12:10.180
En onthoud dan dat we een Ellerston toevoegen om de temporele eigenschappen van de invoer te leren kennen en dan zorgen we voor de

12:10.180 --> 12:13.870
acteur en de criticus, en dat is waar we deze zullen gebruiken om te functioneren.

12:13.870 --> 12:18.300
Genormaliseerde Cullum's Initialize en gewichten erin, zodat ik dat kan proberen.

12:18.430 --> 12:22.140
We gaan nu iets heel krachtigs maken, dus bereid je erop voor.

12:22.600 --> 12:23.960
Tot dan, geniet ervan.
