Bonjour et bienvenue dans ce tutoriel sur Python.
Très bien, nous avons une dernière fonction à implémenter dans notre classe de mémoire de rejeu.
C'est la fonction simple et bien sûr d'obtenir des échantillons aléatoires de notre mémoire.
Et donc cette fonction retournera ces échantillons aléatoires.
Très bien alors allons-y.
Nous allons appeler les choses simples.
Et c'est parti.
Et cette fonction prend deux arguments en entrée.
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
de deviner.
Nous prenons des échantillons de taille fixe et nous devons donc choisir une taille pour les échantillons et, plus précisément, nous
appelons cela une taille de lot.
C'est donc le nom que nous allons donner à notre deuxième argument, la taille du lot.
Et c'est parti.
Nous avons nos deux arguments et nous pouvons maintenant implémenter la fonction simple.
Alors maintenant, je veux juste vous avertir que cela va devenir un peu technique, mais je vais faire de mon mieux pour vous expliquer.
Nous allons donc commencer par créer la variable samples.
Ceci est juste la variable qui contiendra les échantillons de la mémoire.
D'accord si simple est égal.
Et maintenant, comment allons-nous obtenir ces échantillons?
Eh bien tout d’abord, nous devons prendre notre mémoire car nous obtenons les échantillons de notre mémoire.
Ensuite, nous aurons probablement besoin de la taille du lot car les échantillons vont contenir la taille du lot contenu dans
celle d'Elon.
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
bon format de ces échantillons.
Donc, ce que je vais faire, je vais écrire la ligne de code et ensuite, je vais expliquer cet
élément par élément.
Alors faisons-le.
Je commence par prendre une fonction zip et je vais expliquer très vite ce que ça fait
Et à l'intérieur de cette fonction, je vais ajouter une étoile.
Je vais développer cela aussi.
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
ici.
C'est donc la raison principale pour laquelle nous avons dû importer ces bibliothèques aléatoires, car nous prenons des
échantillons aléatoires.
Donc, à partir de cette bibliothèque aléatoire, nous allons utiliser la fonction simple.
Donc, ce sont nos variables et ceci est une fonction donc je vais ajouter quelques parenthèses.
Et maintenant, comme vous pouvez le constater, sample est une fonction et nous devons définir des arguments pour que vous
puissiez voir le premier argument.
Et en fait, parler de soi, cela correspond à la mémoire de parole de nous-même, la mémoire
de notre instance future.
Je vais donc ajouter ici cette mémoire et le second argument est celui que vous avez peut-être deviné: la taille de
la Bechuana est tirée au hasard dans notre mémoire et nous lui avons donné un nom de taille batch.
Donc, le deuxième argument va être Bachche craint.
D'accord.
Donc, la ligne de code est dactylographiée et je vais expliquer ce qu’elle fait.
Donc, tout d’abord, avec cette fonction de points aléatoires simples, nous prenons dans la mémoire des
échantillons aléatoires dont la taille était fixe.
Donc c'est compréhensible.
Mais alors qu'est-ce que cette fonction étoile Zipp fait.
Eh bien, il n’ya pas de mystère à ce sujet.
C'est comme la fonction de remodelage.
Ainsi, par exemple, je vais ajouter un petit peu ici pour expliquer que je vais le supprimer.
Alors disons que par exemple nous avons une liste des éléments suivants par exemple.
Premier un deux trois.
Et puis le deuxième élément.
Quatre cinq six.
Nous avons donc une liste de deux doubles de trois éléments un deux trois quatre cinq six.
Eh bien, si j'applique la fonction zip avec l'étoile dessus.
Bien ce qui deviendrait si Zip star list va être égal à une nouvelle liste mais de
forme différente et forme différente va être un pour deux puis trois et cinq six
D'accord.
Donc c'est juste ce que ça fait.
Cela remodèle simplement votre liste.
OK, maintenant que vous comprenez ce que cette liste d'étoiles de Zipp fait.
Eh bien, expliquons maintenant pourquoi nous devions le faire.
Donc, comme vous l'avez compris, nous allons ajouter les événements à la mémoire et les événements ont la forme.
D'abord l'état, puis l'action et ensuite la récompense.
Mais pour notre algorithme, nous ne voulons pas de ce format, mais plutôt que nos échantillons aient le format suivant.
Un format est composé de trois échantillons: un échantillon pour les états, un échantillon pour les actions et un échantillon
pour la récompense.
Ainsi, par exemple, disons que ce nombre un à trois correspond à une action un.
Nous voulons un, puis indiquer à l'action deux et nous voulions bien, nous voulons un lot pour chaque lot
pour les états un et deux.
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.
C’est le format que nous attendons ensuite, car nous allons ensuite regrouper ces lots dans une
tarte à l’horrible impact dont nous nous souviendrons est une variable qui contient à la fois un tenseur et une
pente.
Et cela afin de pouvoir différencier par rapport à un tenseur, afin de pouvoir différencier par
rapport à intensifier dans la structure d’un tenseur contenant un horrible et d’un gradient.
Encore une fois, c'est comme ça que la torche Pi.
Donc, pour résumer, nous créons un lot pour chacune des actions et des récompenses de l'État, puis nous
allons mettre chacun de ces vetches séparément dans des octets, dont Horrible dont chacun aura un
gradient afin que nous puissions éventuellement différencier chacun d'eux.
D'accord, c'est le but de la fonction Zipp.
Alors permettez-moi de supprimer ce commentaire.
Et maintenant, la seule chose à faire est de renvoyer les échantillons.
Donc, comme je viens de l'expliquer, nous ne pouvons pas retourner les échantillons directement pour la simple raison que
nous voulons les mettre entre les deux viables.
Donc, pour faire cela pour chacun des échantillons, nous allons utiliser la fonction map
et cette fonction cartographiera les échantillons pour tordre les variables qui contiendront un tenseur et un gradient.
Comme vous pouvez le constater, cette fonction de la carte prend plusieurs arguments.
Le premier argument est une fonction et cette fonction sera la fonction qui convertira
les échantillons en variables torche.
Et le deuxième argument est ce sur quoi nous voulons appliquer cette fonction.
Ce seront donc les arguments de cette fonction et donc ce que cela va être.
Cela va bien sûr être les échantillons.
Donc, le deuxième argument ici sera les symboles.
Mais alors définissons la fonction sur laquelle nous voulons appliquer.
Chacun des symboles.
Donc, pour définir une fonction ici, nous devons d'abord donner un nom à la fonction qui appellera lambda.
C'est juste un nom et donnant à Lenda alors X qui sera la variable de cette fonction.
Donc, ce n'est qu'un nom et donnant pour la variable et ensuite.
Et nous donnons ici l’expression de la fonction qui est ce que nous voulons que cette
fonction lambda retourne et voyons ce qu’elle va bien être supposée être quelque chose qui convertira nos échantillons en une
variable de la flamme et le fera.
Nous l'avons déjà mentionné dans certains tutoriels précédents.
Eh bien, nous avons la fonction Voivode pour eux.
La voix fonctionnera nous allons faire cette conversion d'un danseur de flambeau à une variable qui contiendra le
capteur et le plus grand.
Donc, la première chose que je vais ajouter ici est une variable variable à l’intérieur de laquelle je
vais convertir X car X sera la plus simple qui sera appliquée aux échantillons.
Mais c’est tout ce qu’il faut mettre en œuvre pour terminer: il faut que, pour chaque
lot contenu dans l’échantillon, par exemple le lot d’actions 1 8 2 3 et
les autres actions à concaténer avec respect. à la première fois le moteur qui correspond aux États.
Et pourquoi devons-nous faire cette concaténation?
C'est juste pour que tout soit bien aligné.
C’est-à-dire que dans chaque rangée, indiquer l’action et la récompense correspond au même temps t.
Ainsi, nous obtenons finalement une liste de lots bien alignés et chaque lot est un gâteau pour Voivod.
Alors, comment pouvons-nous faire cette concaténation.
Nous devons utiliser la fonction chat de la bibliothèque de torches.
Nous allons donc ajouter ici le flambeau auquel s’ajoute celui qui s’applique à X mais dans cette fonction,
nous devons spécifier la dimension à laquelle nous souhaitons effectuer cette concaténation.
Et comme je viens de le mentionner, c’est le premier moteur à avoir été indexé.
Et voilà, nous avons notre fonction prête à utiliser cette Lunda qui prendra les échantillons pour les concaténer
par rapport au premier moteur de temps, puis nous convertirons les capteurs en certaines variables
de torche contenant à la fois un tenseur et un appliquer à la rigole dans le sens
où nous pourrons nous différencier pour avoir des pondérations de données.
Bon alors cette fonction est prête.
Et puis voici le deuxième argument de la fonction map.
Nous devons spécifier sur quoi nous voulons appliquer cette fonction et sur tous nos échantillons.
Nous y voilà.
Nous appliquerons cette fonction lambda sur tous les échantillons de manière à obtenir éventuellement une liste des correspondances où
chaque correspondance est une torche PI viable.
Très bien, c’était assez technique, mais au moins tout va bien marcher.
Nous voulons utiliser cette technique.
Ensuite, nous ne l'utilisons que ici, donc si vous ne voulez pas comprendre en profondeur
les détails techniques, vous pouvez simplement copier ces trois lignes de code pour simplifier votre mémoire si vous voulez
créer une intelligence artificielle avec une torche. comme tu veux.
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
en œuvre et nous pouvons passer à la classe suivante et finale, qui sera le mode de sécurité complet.
Donc, dans ce modèle, nous aurons bien sûr notre réseau qui expérimentera la répétition, puis tout le reste
de l'algorithme de sécurité.
Donc, ça va être une classe beaucoup plus grande.
Nous allons créer environ 10 fonctions, mais c'est uniquement parce que nous procédons pas à pas pour que vous
puissiez mieux comprendre ce qui se passe.
J'ai donc hâte de mettre en œuvre notre modèle de sécurité.
Et jusque là je