WEBVTT

00:00.240 --> 00:02.790
Bonjour et bienvenue dans ce tutoriel sur Python.

00:02.790 --> 00:07.230
Très bien, nous avons une dernière fonction à implémenter dans notre classe de mémoire de rejeu.

00:07.230 --> 00:12.060
C'est la fonction simple et bien sûr d'obtenir des échantillons aléatoires de notre mémoire.

00:12.210 --> 00:16.080
Et donc cette fonction retournera ces échantillons aléatoires.

00:16.080 --> 00:17.850
Très bien alors allons-y.

00:17.870 --> 00:20.630
Nous allons appeler les choses simples.

00:20.640 --> 00:21.330
Et c'est parti.

00:21.420 --> 00:25.030
Et cette fonction prend deux arguments en entrée.

00:25.260 --> 00:32.490
Le premier comme d'habitude nous-mêmes notre futur objet à rejouer la classe de mémoire et le deuxième argument est peut vous essayer

00:32.490 --> 00:33.430
de deviner.

00:33.510 --> 00:40.290
Nous prenons des échantillons de taille fixe et nous devons donc choisir une taille pour les échantillons et, plus précisément, nous

00:40.290 --> 00:42.610
appelons cela une taille de lot.

00:42.820 --> 00:47.910
C'est donc le nom que nous allons donner à notre deuxième argument, la taille du lot.

00:48.180 --> 00:49.530
Et c'est parti.

00:49.560 --> 00:54.490
Nous avons nos deux arguments et nous pouvons maintenant implémenter la fonction simple.

00:54.500 --> 01:00.780
Alors maintenant, je veux juste vous avertir que cela va devenir un peu technique, mais je vais faire de mon mieux pour vous expliquer.

01:01.250 --> 01:05.140
Nous allons donc commencer par créer la variable samples.

01:05.150 --> 01:09.620
Ceci est juste la variable qui contiendra les échantillons de la mémoire.

01:09.620 --> 01:11.340
D'accord si simple est égal.

01:11.360 --> 01:14.090
Et maintenant, comment allons-nous obtenir ces échantillons?

01:14.450 --> 01:20.960
Eh bien tout d’abord, nous devons prendre notre mémoire car nous obtenons les échantillons de notre mémoire.

01:20.960 --> 01:26.870
Ensuite, nous aurons probablement besoin de la taille du lot car les échantillons vont contenir la taille du lot contenu dans

01:26.930 --> 01:27.720
celle d'Elon.

01:27.830 --> 01:33.920
Nous avons donc besoin de mémoire, de taille de lot, puis de tour de rôle ou d’astuces de bison pour obtenir un

01:34.040 --> 01:35.600
bon format de ces échantillons.

01:35.600 --> 01:40.790
Donc, ce que je vais faire, je vais écrire la ligne de code et ensuite, je vais expliquer cet

01:40.790 --> 01:41.900
élément par élément.

01:41.990 --> 01:42.860
Alors faisons-le.

01:42.860 --> 01:48.580
Je commence par prendre une fonction zip et je vais expliquer très vite ce que ça fait

01:48.620 --> 01:51.980
Et à l'intérieur de cette fonction, je vais ajouter une étoile.

01:52.100 --> 01:53.800
Je vais développer cela aussi.

01:53.900 --> 02:02.600
L’étoile et la pensée aléatoire centrale, si aléatoire que vous l’auriez deviné, est la bibliothèque aléatoire que nous avons importée

02:02.600 --> 02:03.360
ici.

02:03.410 --> 02:08.900
C'est donc la raison principale pour laquelle nous avons dû importer ces bibliothèques aléatoires, car nous prenons des

02:08.900 --> 02:09.730
échantillons aléatoires.

02:10.040 --> 02:15.570
Donc, à partir de cette bibliothèque aléatoire, nous allons utiliser la fonction simple.

02:15.600 --> 02:20.060
Donc, ce sont nos variables et ceci est une fonction donc je vais ajouter quelques parenthèses.

02:20.210 --> 02:26.110
Et maintenant, comme vous pouvez le constater, sample est une fonction et nous devons définir des arguments pour que vous

02:26.110 --> 02:27.850
puissiez voir le premier argument.

02:27.850 --> 02:34.660
Et en fait, parler de soi, cela correspond à la mémoire de parole de nous-même, la mémoire

02:34.870 --> 02:36.970
de notre instance future.

02:37.180 --> 02:44.290
Je vais donc ajouter ici cette mémoire et le second argument est celui que vous avez peut-être deviné: la taille de

02:44.530 --> 02:51.360
la Bechuana est tirée au hasard dans notre mémoire et nous lui avons donné un nom de taille batch.

02:51.550 --> 02:55.690
Donc, le deuxième argument va être Bachche craint.

02:55.870 --> 02:56.410
D'accord.

02:56.470 --> 03:01.080
Donc, la ligne de code est dactylographiée et je vais expliquer ce qu’elle fait.

03:01.510 --> 03:08.260
Donc, tout d’abord, avec cette fonction de points aléatoires simples, nous prenons dans la mémoire des

03:08.800 --> 03:11.820
échantillons aléatoires dont la taille était fixe.

03:12.550 --> 03:13.940
Donc c'est compréhensible.

03:14.150 --> 03:18.230
Mais alors qu'est-ce que cette fonction étoile Zipp fait.

03:18.530 --> 03:20.500
Eh bien, il n’ya pas de mystère à ce sujet.

03:20.540 --> 03:22.870
C'est comme la fonction de remodelage.

03:22.880 --> 03:28.460
Ainsi, par exemple, je vais ajouter un petit peu ici pour expliquer que je vais le supprimer.

03:28.460 --> 03:34.680
Alors disons que par exemple nous avons une liste des éléments suivants par exemple.

03:34.820 --> 03:37.900
Premier un deux trois.

03:38.180 --> 03:39.680
Et puis le deuxième élément.

03:39.680 --> 03:43.180
Quatre cinq six.

03:43.190 --> 03:48.020
Nous avons donc une liste de deux doubles de trois éléments un deux trois quatre cinq six.

03:48.380 --> 03:52.690
Eh bien, si j'applique la fonction zip avec l'étoile dessus.

03:52.880 --> 04:02.840
Bien ce qui deviendrait si Zip star list va être égal à une nouvelle liste mais de

04:03.380 --> 04:12.440
forme différente et forme différente va être un pour deux puis trois et cinq six

04:12.460 --> 04:12.770
D'accord.

04:12.800 --> 04:13.950
Donc c'est juste ce que ça fait.

04:13.970 --> 04:16.640
Cela remodèle simplement votre liste.

04:16.990 --> 04:21.610
OK, maintenant que vous comprenez ce que cette liste d'étoiles de Zipp fait.

04:21.680 --> 04:24.560
Eh bien, expliquons maintenant pourquoi nous devions le faire.

04:24.590 --> 04:30.360
Donc, comme vous l'avez compris, nous allons ajouter les événements à la mémoire et les événements ont la forme.

04:30.440 --> 04:34.530
D'abord l'état, puis l'action et ensuite la récompense.

04:34.820 --> 04:40.330
Mais pour notre algorithme, nous ne voulons pas de ce format, mais plutôt que nos échantillons aient le format suivant.

04:40.330 --> 04:47.540
Un format est composé de trois échantillons: un échantillon pour les états, un échantillon pour les actions et un échantillon

04:47.540 --> 04:48.660
pour la récompense.

04:48.800 --> 04:53.690
Ainsi, par exemple, disons que ce nombre un à trois correspond à une action un.

04:53.800 --> 05:01.100
Nous voulons un, puis indiquer à l'action deux et nous voulions bien, nous voulons un lot pour chaque lot

05:01.100 --> 05:03.630
pour les états un et deux.

05:03.680 --> 05:10.090
L'un est un match pour l'action un dans l'action deux et un troisième que pour nous étions un et nous étions deux.

05:10.190 --> 05:15.680
C’est le format que nous attendons ensuite, car nous allons ensuite regrouper ces lots dans une

05:15.770 --> 05:22.610
tarte à l’horrible impact dont nous nous souviendrons est une variable qui contient à la fois un tenseur et une

05:22.610 --> 05:23.280
pente.

05:23.510 --> 05:29.750
Et cela afin de pouvoir différencier par rapport à un tenseur, afin de pouvoir différencier par

05:29.750 --> 05:35.480
rapport à intensifier dans la structure d’un tenseur contenant un horrible et d’un gradient.

05:35.540 --> 05:37.820
Encore une fois, c'est comme ça que la torche Pi.

05:37.820 --> 05:44.480
Donc, pour résumer, nous créons un lot pour chacune des actions et des récompenses de l'État, puis nous

05:44.480 --> 05:50.600
allons mettre chacun de ces vetches séparément dans des octets, dont Horrible dont chacun aura un

05:50.840 --> 05:54.360
gradient afin que nous puissions éventuellement différencier chacun d'eux.

05:54.620 --> 05:57.430
D'accord, c'est le but de la fonction Zipp.

05:57.480 --> 06:00.350
Alors permettez-moi de supprimer ce commentaire.

06:00.530 --> 06:05.980
Et maintenant, la seule chose à faire est de renvoyer les échantillons.

06:06.230 --> 06:12.650
Donc, comme je viens de l'expliquer, nous ne pouvons pas retourner les échantillons directement pour la simple raison que

06:12.830 --> 06:15.670
nous voulons les mettre entre les deux viables.

06:15.680 --> 06:22.580
Donc, pour faire cela pour chacun des échantillons, nous allons utiliser la fonction map

06:22.580 --> 06:30.180
et cette fonction cartographiera les échantillons pour tordre les variables qui contiendront un tenseur et un gradient.

06:30.200 --> 06:33.550
Comme vous pouvez le constater, cette fonction de la carte prend plusieurs arguments.

06:33.620 --> 06:38.600
Le premier argument est une fonction et cette fonction sera la fonction qui convertira

06:38.600 --> 06:40.590
les échantillons en variables torche.

06:40.760 --> 06:45.340
Et le deuxième argument est ce sur quoi nous voulons appliquer cette fonction.

06:45.590 --> 06:50.580
Ce seront donc les arguments de cette fonction et donc ce que cela va être.

06:50.600 --> 06:52.780
Cela va bien sûr être les échantillons.

06:52.790 --> 06:55.510
Donc, le deuxième argument ici sera les symboles.

06:55.870 --> 06:59.440
Mais alors définissons la fonction sur laquelle nous voulons appliquer.

06:59.480 --> 07:00.620
Chacun des symboles.

07:01.040 --> 07:06.890
Donc, pour définir une fonction ici, nous devons d'abord donner un nom à la fonction qui appellera lambda.

07:07.070 --> 07:14.330
C'est juste un nom et donnant à Lenda alors X qui sera la variable de cette fonction.

07:14.420 --> 07:18.390
Donc, ce n'est qu'un nom et donnant pour la variable et ensuite.

07:18.500 --> 07:24.140
Et nous donnons ici l’expression de la fonction qui est ce que nous voulons que cette

07:25.400 --> 07:32.010
fonction lambda retourne et voyons ce qu’elle va bien être supposée être quelque chose qui convertira nos échantillons en une

07:32.250 --> 07:34.800
variable de la flamme et le fera.

07:34.800 --> 07:37.370
Nous l'avons déjà mentionné dans certains tutoriels précédents.

07:37.560 --> 07:39.880
Eh bien, nous avons la fonction Voivode pour eux.

07:40.110 --> 07:46.680
La voix fonctionnera nous allons faire cette conversion d'un danseur de flambeau à une variable qui contiendra le

07:46.690 --> 07:48.590
capteur et le plus grand.

07:48.810 --> 07:55.830
Donc, la première chose que je vais ajouter ici est une variable variable à l’intérieur de laquelle je

07:56.010 --> 08:01.540
vais convertir X car X sera la plus simple qui sera appliquée aux échantillons.

08:02.420 --> 08:09.080
Mais c’est tout ce qu’il faut mettre en œuvre pour terminer: il faut que, pour chaque

08:09.140 --> 08:15.680
lot contenu dans l’échantillon, par exemple le lot d’actions 1 8 2 3 et

08:15.680 --> 08:23.080
les autres actions à concaténer avec respect. à la première fois le moteur qui correspond aux États.

08:23.120 --> 08:25.380
Et pourquoi devons-nous faire cette concaténation?

08:25.550 --> 08:27.610
C'est juste pour que tout soit bien aligné.

08:27.710 --> 08:34.740
C’est-à-dire que dans chaque rangée, indiquer l’action et la récompense correspond au même temps t.

08:35.180 --> 08:42.240
Ainsi, nous obtenons finalement une liste de lots bien alignés et chaque lot est un gâteau pour Voivod.

08:42.470 --> 08:44.700
Alors, comment pouvons-nous faire cette concaténation.

08:44.840 --> 08:48.030
Nous devons utiliser la fonction chat de la bibliothèque de torches.

08:48.170 --> 08:55.400
Nous allons donc ajouter ici le flambeau auquel s’ajoute celui qui s’applique à X mais dans cette fonction,

08:55.400 --> 09:00.820
nous devons spécifier la dimension à laquelle nous souhaitons effectuer cette concaténation.

09:00.860 --> 09:05.460
Et comme je viens de le mentionner, c’est le premier moteur à avoir été indexé.

09:05.900 --> 09:12.320
Et voilà, nous avons notre fonction prête à utiliser cette Lunda qui prendra les échantillons pour les concaténer

09:12.320 --> 09:18.110
par rapport au premier moteur de temps, puis nous convertirons les capteurs en certaines variables

09:18.110 --> 09:24.230
de torche contenant à la fois un tenseur et un appliquer à la rigole dans le sens

09:24.230 --> 09:28.610
où nous pourrons nous différencier pour avoir des pondérations de données.

09:28.610 --> 09:30.170
Bon alors cette fonction est prête.

09:30.410 --> 09:35.270
Et puis voici le deuxième argument de la fonction map.

09:35.270 --> 09:42.960
Nous devons spécifier sur quoi nous voulons appliquer cette fonction et sur tous nos échantillons.

09:43.040 --> 09:43.850
Nous y voilà.

09:43.850 --> 09:50.750
Nous appliquerons cette fonction lambda sur tous les échantillons de manière à obtenir éventuellement une liste des correspondances où

09:50.990 --> 09:53.840
chaque correspondance est une torche PI viable.

09:53.840 --> 09:58.810
Très bien, c’était assez technique, mais au moins tout va bien marcher.

09:58.850 --> 10:00.060
Nous voulons utiliser cette technique.

10:00.080 --> 10:05.150
Ensuite, nous ne l'utilisons que ici, donc si vous ne voulez pas comprendre en profondeur

10:05.150 --> 10:11.060
les détails techniques, vous pouvez simplement copier ces trois lignes de code pour simplifier votre mémoire si vous voulez

10:11.060 --> 10:14.460
créer une intelligence artificielle avec une torche. comme tu veux.

10:14.600 --> 10:21.110
Mais la bonne nouvelle est que nous en avons terminé avec cette répétition. La répétition de l'expérience de la classe de mémoire est maintenant mise

10:21.470 --> 10:26.780
en œuvre et nous pouvons passer à la classe suivante et finale, qui sera le mode de sécurité complet.

10:26.960 --> 10:34.520
Donc, dans ce modèle, nous aurons bien sûr notre réseau qui expérimentera la répétition, puis tout le reste

10:34.640 --> 10:36.600
de l'algorithme de sécurité.

10:36.620 --> 10:39.150
Donc, ça va être une classe beaucoup plus grande.

10:39.200 --> 10:44.240
Nous allons créer environ 10 fonctions, mais c'est uniquement parce que nous procédons pas à pas pour que vous

10:44.240 --> 10:46.130
puissiez mieux comprendre ce qui se passe.

10:46.520 --> 10:49.260
J'ai donc hâte de mettre en œuvre notre modèle de sécurité.

10:49.280 --> 10:50.900
Et jusque là je
