WEBVTT

00:00.480 --> 00:06.650
Bonjour et bienvenue dans ce tutoriel, nous allons maintenant créer cette seconde fonction pour initialiser les poids.

00:06.840 --> 00:11.190
Et celui-ci sera utilisé pour obtenir un apprentissage optimal.

00:11.340 --> 00:13.160
En fait, ces poids.

00:13.230 --> 00:21.960
Donc, la deuxième fonction que nous allons appeler poids soulignent en elle et prend comme argument

00:22.200 --> 00:26.020
l'objet qui représente le réseau de neurones.

00:26.220 --> 00:27.080
Donc c'est tout.

00:27.090 --> 00:32.300
Et puis deux points et maintenant, entrons dans la fonction pour définir ce que nous voulions faire.

00:32.580 --> 00:38.610
En gros, nous voulions donc initialiser les poids du nouveau réseau de manière à obtenir

00:38.610 --> 00:39.920
un apprentissage optimal.

00:40.080 --> 00:43.590
Donc, cela ne semblera pas particulièrement intuitif.

00:43.590 --> 00:46.740
Ceci est basé sur des documents de recherche et des expériences.

00:46.740 --> 00:52.440
Nous allons initialiser les poids d’une manière spécifique que nous n’avons pas vue auparavant, mais

00:52.440 --> 00:54.740
croyez-moi, cela optimisera le processus d’apprentissage.

00:54.930 --> 01:00.760
Nous avons donc simplement mis en œuvre sans entrer dans les détails de la raison pour laquelle nous initialisons les poids de cette façon.

01:00.960 --> 01:06.390
Nous allons donc commencer par utiliser une astuce qui sera utilisée plus tard pour faire la

01:06.660 --> 01:13.260
distinction entre la convolution et la connexion complète car vous savez que notre IA aura des yeux et qu’elle

01:13.260 --> 01:15.290
aura donc des couches convolutives.

01:15.330 --> 01:20.550
Et bien sûr, il aura également des couches entièrement connectées et nous aurons une initialisation différente

01:20.550 --> 01:23.550
des poids pour ces deux types de connexions.

01:23.820 --> 01:28.620
Nous allons donc utiliser cette astuce pour séparer ces deux types de connexions,

01:28.890 --> 01:34.160
puis nous utiliserons certaines conditions pour obtenir une initialisation différente pour chacune de ces connexions.

01:34.170 --> 01:40.410
Donc, cette astuce consiste à créer une nouvelle variable que nous allons appeler le nom de famille et qui sera

01:40.410 --> 01:44.630
appelée à un objet ainsi et qui représente le réseau de neurones.

01:44.670 --> 01:47.140
Mais c'est un objet que nous verrons plus tard.

01:47.430 --> 01:54.290
Et nous allons obtenir l'attribut spécial de cet objet qui sera Kolesnik avec

01:54.390 --> 02:01.570
double soulignement, première soulignement, double soulignement, double soulignement, encore une fois, nom et presque.

02:01.610 --> 02:03.100
Un autre double soulignement.

02:03.360 --> 02:10.500
Il s’agit donc d’une astuce assez moche pour rechercher le type de connexion de notre nouvel objet réseau, mais cela nous donnera exactement

02:10.500 --> 02:12.100
ce que vous voulez.

02:12.210 --> 02:15.300
Vous allez voir que ça va avoir du sens quand on commence si les conditions sont réunies.

02:15.540 --> 02:19.710
Et en passant, en parlant de conditions, nous pouvons les arrêter tout de suite.

02:19.710 --> 02:26.170
Et donc, ce que nous allons faire maintenant, c'est de commencer la première condition qui nous donnera le premier cas.

02:26.280 --> 02:34.770
C'est-à-dire si la connexion est une convolution et écrire ainsi cette condition correctement si le nom de la classe est

02:35.010 --> 02:35.510
correct.

02:35.510 --> 02:45.180
Ici, nous utilisons une méthode, la méthode find, find et inside quand elles sont mises entre guillemets pour la convolution.

02:45.300 --> 02:54.330
Et donc, si le nom de la classe trouve vraiment que nous pouvons faire, nous ferons une différence avec le moins un qui est réellement si

02:54.540 --> 02:57.900
nous avons une convolution parce que Manasquan signifie non.

02:58.200 --> 03:03.360
Dans ce cas, nous effectuerons une initialisation spéciale des poids.

03:03.420 --> 03:07.830
Donc, cette condition signifie ici si nous avons une connexion de convolution.

03:07.830 --> 03:13.910
Donc, dans ce cas, nous exécutons cette initialisation spécifique de la manière dont nous voulons procéder.

03:14.040 --> 03:17.930
Et c’est là que vont venir toutes les choses qui ne sont pas intuitives.

03:18.060 --> 03:21.990
Nous allons commencer par créer une variable que nous allons appeler.

03:22.180 --> 03:29.260
Et cette forme de courtier pour que le poids souligne la forme sera une liste qui contiendra essentiellement la forme des

03:29.530 --> 03:31.310
poids dans notre nouveau réseau.

03:31.580 --> 03:35.800
Nous avons donc utilisé la fonction de liste pour créer une liste.

03:35.930 --> 03:42.880
Et à l'intérieur, nous allons mettre dans le réseau neuronal ce poids qui sera le poids du réseau

03:42.880 --> 03:43.500
neuronal.

03:43.570 --> 03:50.890
Mais dans la connexion par convolution et pour obtenir la forme de ces poids, nous utilisons un

03:50.890 --> 03:59.670
autre attribut, à savoir les données, puis taille, qui nous donnera la forme de ces poids dans la connexion par convolution.

03:59.680 --> 04:06.580
Alors maintenant, poids de forme contient dans une liste la forme des poids et les connexions de convolution de

04:06.880 --> 04:08.300
notre réseau et.

04:08.460 --> 04:14.510
Très bien, nous avons alors une forme de poids pour initialiser les poids de cette connexion de convolution.

04:14.560 --> 04:16.650
Nous allons avoir besoin de deux valeurs.

04:16.650 --> 04:22.920
La première est le produit de la première dimension par la deuxième nomination par cette troisième dimension.

04:22.930 --> 04:27.960
C’est ce que nous allons obtenir maintenant et nous devrons également obtenir les zéros d’ancienne fois la

04:27.960 --> 04:33.570
deuxième fois et parfois la troisième dimension, puis nous utiliserons ces deux valeurs dans la compétition de la manière

04:33.660 --> 04:35.660
dont nous initialisons les valeurs. poids.

04:35.670 --> 04:37.920
Alors passons cela au travers de ce premier produit.

04:37.920 --> 04:46.050
Nous appelons cela plaisir et cela correspondra au produit et nous allons utiliser la fonction prod

04:46.050 --> 04:55.270
qui est une fonction non thaïlandaise qui a un raccourci et P So MP qui PRUD et à l'intérieur

04:55.260 --> 04:56.680
prod produit.

04:57.180 --> 05:02.590
Et comme nous l'avons dit, c'est le diamant et un deux et trois de notre poids.

05:02.880 --> 05:10.430
Et donc pour obtenir cela, nous pouvons prendre une forme d'onde et obtenir les indices de ces trois moteurs de ligne.

05:10.500 --> 05:15.800
Nous avons donc réglé Simonton sur un pouce et trois inclus.

05:16.020 --> 05:18.770
Donc, un donjon pour exclus.

05:19.050 --> 05:24.230
Et c'est comme ça que nous pouvons l'obtenir car la borne supérieure n'est pas incluse ici.

05:24.440 --> 05:35.410
Donc, c'est ce que nous voulons, alors Même chose pour le plaisir, car nous avons dit Fan, ce sera le produit des dommages dans la

05:35.410 --> 05:39.650
dimension temps zéro, deux fois que j'ai mentionné trois.

05:39.730 --> 05:45.490
Et donc ici nous pouvons être indexés de deux inclus à quatre exclus.

05:45.730 --> 05:52.110
Donc, cela deviendra le produit du temps et des deux et trois, puis nous pourrons le multiplier

05:52.180 --> 05:58.900
par conception et zéro auquel nous pourrons avoir accès avec un indice zéro pour le navire de baleine.

05:59.230 --> 06:16.990
Donc, pour résumer, c’est la fois deux fois sur trois et juste en dessous, nous avons zéro fois deux fois sur trois de

06:16.990 --> 06:20.320
notre liste de poids.

06:20.320 --> 06:25.390
Très bien, nous allons maintenant utiliser ces deux valeurs fan in et fan

06:25.870 --> 06:33.280
out pour procéder à l’initialisation, car nous allons calculer une nouvelle valeur en appelant W lié, ce qui est égal à

06:33.280 --> 06:39.530
la racine carrée. nous pouvons obtenir avec une fonction et P de et par cela comme qr t.

06:39.520 --> 06:40.830
Deuxième comme avant.

06:40.840 --> 06:46.710
Donc, la racine carrée de 6 divisée par déployer.

06:46.820 --> 06:57.340
Alors, admirons-nous que nous ayons ce W représente ici en quelque sorte la taille des dizaines de

06:57.340 --> 06:58.140
poids

06:58.240 --> 06:59.740
Et pourquoi avons-nous eu cela.

06:59.740 --> 07:06.130
C'est parce qu'alors que nous étions sur le point de faire maintenant est de générer des poids

07:06.130 --> 07:10.070
aléatoires inversement proportionnels à la taille du tenseur des poids.

07:10.180 --> 07:18.580
En effet, ce que nous sommes sur le point de faire maintenant consiste à exploiter notre nouveau réseau et à en peser le poids.

07:18.580 --> 07:25.260
Donc, en prenant toujours le poids de l’attribut, accédez à ses données qui sont le tenseur lui-même.

07:26.100 --> 07:33.330
Et ensuite, à partir de ce tenseur de poids, nous allons générer des poids aléatoires inversement

07:33.330 --> 07:37.110
proportionnels à la taille des poids du tenseur.

07:37.180 --> 07:45.520
Et donc dans cette fonction uniforme, nous devons maintenant définir une limite inférieure qui sera moins liée W et

07:45.520 --> 07:49.090
la limite supérieure qui sera plus W arrière.

07:49.750 --> 07:52.460
OK, c'est pour les poids.

07:52.510 --> 07:57.460
Et maintenant, nous devons initialiser le biais et les bonnes nouvelles pour le biais.

07:57.460 --> 07:59.130
Ça va être beaucoup plus simple.

07:59.200 --> 08:07.650
Nous allons tous les initialiser avec des zéros afin d'obtenir ces achats nous les prenons de notre modèle qui est bien sûr

08:08.070 --> 08:09.470
notre nouveau réseau.

08:09.930 --> 08:15.790
Et puis l'attribut du biais est le biais alors même avec accès aux données.

08:16.200 --> 08:23.430
Ensuite, nous allons utiliser une méthode qui est la méthode de soulignement Phil qui, comme vous l’auriez peut-être deviné, est utilisée pour remplir

08:23.580 --> 08:29.970
le tenseur des biais avec des zéros, avec les règles que nous devons spécifier pour que nous voulions le remplir

08:29.970 --> 08:31.600
avec des zéros ici.

08:31.700 --> 08:34.230
Et voilà pourquoi je mets ici zéro.

08:34.560 --> 08:40.210
Pour résumer, nous générons des poids aléatoires inversement proportionnels à la taille des poids du tenseur

08:40.210 --> 08:43.860
et nous avons initialisé le périphérique avec des zéros.

08:43.860 --> 08:49.850
Très bien, c'était donc pour l'action Initialize au niveau des connexions de convolution.

08:49.880 --> 08:52.880
Nous devons maintenant faire de même pour la connexion complète.

08:53.300 --> 09:01.470
Et donc nous allons ajouter une nouvelle condition et si même nous prenons cette astuce nous utilisons le premier nom de classe qui

09:01.470 --> 09:05.160
est cette variable qui contient les différents noms des connexions.

09:05.160 --> 09:14.440
Donc, si le nom de classe est le même, nous utilisons la méthode find à laquelle, cette fois-ci, une connexion complète est une

09:14.580 --> 09:19.050
connexion linéaire classique dans un réseau de neurones artificiels classique.

09:19.390 --> 09:27.160
Et si le nom pour cela est linéaire et dire que nous allons utiliser cette astuce pour dire que nous voulons

09:27.160 --> 09:35.810
que ce soit différent de moins un, de sorte que cette fin de classe est que le beau linge est différent de moins un

09:35.810 --> 09:41.360
signifie que si la connexion est en le là-bas si nous avons une connexion classique.

09:41.360 --> 09:44.620
Donc, dans ce cas, comment allons-nous initialiser les poids.

09:44.840 --> 09:47.260
Eh bien, ça va être tout à fait pareil.

09:47.270 --> 09:54.020
Nous allons introduire Voivode Whaleship qui n'effacera pas le premier parce que nous allons soit dans ce

09:54.050 --> 10:01.430
cas ou dans ce cas donc ce ne sera pas la même chose afin que nous puissions totalement l'inverser, puis

10:01.430 --> 10:08.600
nous allons introduire un ventilateur dans la variable que ce temps ne sera pas égal au produit de ces

10:08.600 --> 10:09.440
trois dimensions.

10:09.650 --> 10:17.090
Mais en réalité, cette fois-ci, il sera simplement question de concevoir une mention.

10:17.380 --> 10:23.870
Et c'est parce que pour la connexion complète, il y a moins de connexions que dans une connexion par convolution.

10:23.880 --> 10:29.970
À la fin, c’est une conférence d’intuition et dans la section CNN, il est moins fait

10:29.970 --> 10:32.640
mention d’une connexion complète que d’une convolution.

10:32.640 --> 10:39.840
Donc, fondamentalement, nous prenons ce temps dans une année puis disons que nous allons avoir une variable

10:39.840 --> 10:48.780
de ventilation qui sera ensuite utilisée pour calculer W. limites et cette domination sur fan va être poids forme de l'indice

10:49.160 --> 10:49.890
0.

10:49.890 --> 10:51.470
C'est le zéro des diamants.

10:51.480 --> 10:55.290
Très bien alors à GWB et ça va être pareil.

10:55.470 --> 11:01.780
Cela va être la racine carrée de 6 divisé par la somme incriminée et découvrez.

11:01.830 --> 11:04.660
Alors on y va.

11:04.880 --> 11:11.870
Et puis la bonne nouvelle est que c’est exactement la même chose que précédemment, nous utilisons la fonction

11:11.870 --> 11:20.990
uniforme pour les poids et la fonction de remplissage pour le biais afin d’obtenir le même type d’initialisation cette fois-ci avec un ventilateur

11:20.990 --> 11:24.440
différent, un ventilateur sortant et donc différent. .

11:24.560 --> 11:27.520
Donc, c'est le même principe, c'est la même idée.

11:27.530 --> 11:32.660
La seule chose qui change ici est que nous avons moins de dominations pour la

11:32.780 --> 11:39.160
connexion complète et donc une considération plus simple de cette limite de pondération ici pour générer ces pondérations aléatoires.

11:39.200 --> 11:45.210
Mais la bonne nouvelle est que, maintenant, ce n’est plus seulement ces poids et qu’il fonctionne très bien.

11:45.380 --> 11:47.150
Mais maintenant nous avons deux outils.

11:47.330 --> 11:50.180
Nous sommes donc prêts à commencer à construire le cerveau.

11:50.300 --> 11:51.280
Donc je ne peux pas attendre.

11:51.290 --> 11:53.500
Ce sera bien sûr la partie la plus excitante.

11:53.510 --> 11:57.630
C'était juste pour se réchauffer et nous préparer pour le grand truc.

11:57.650 --> 11:59.990
Nous allons donc nous en occuper dans le prochain tutoriel.

12:00.080 --> 12:02.590
En fait, il faudra bien sûr plusieurs tutoriels.

12:02.690 --> 12:04.350
Nous allons commencer par faire les yeux.

12:04.520 --> 12:10.040
Et puis souvenez-vous que nous allons ajouter une illustration pour apprendre les propriétés temporelles de l'entrée, puis nous nous

12:10.040 --> 12:12.170
occuperons de l'acteur et du critique.

12:12.170 --> 12:17.000
Et c’est là que nous allons utiliser cela pour que la fonction normalisée vienne de l’initialiseur et des poids.

12:17.120 --> 12:18.590
Donc j'ai hâte de faire ça.

12:18.590 --> 12:20.630
Nous allons faire quelque chose de très puissant maintenant.

12:20.630 --> 12:22.510
Alors préparez-vous pour ça.

12:22.790 --> 12:24.250
Jusque-là, profitez de l'IA.
