Hallo en welkom bij deze Python-tutorial.
Oké, we hebben één functie minder om te implementeren in onze geheugenklasse.
Dat is de simpele functie en dat is natuurlijk om wat willekeurige steekproeven uit ons geheugen te halen
en daarom zal deze functie deze willekeurige steekproeven teruggeven.
Oke.
Laten we het dus implementeren.
We gaan het simpel noemen.
Daar gaan we.
En deze functie heeft twee argumenten als invoer.
De eerste, zoals gewoonlijk, zelf ons toekomstige doel, de vervangende klasse.
En het tweede argument is: kun je proberen te raden?
Welnu, we nemen enkele monsters, een vaste maat, en daarom moeten we een maat vier monsters kiezen.
En meer precies, we noemen het een batchgrootte.
Dus dat is de naam die we gaan geven aan ons tweede argument, batchgrootte.
En dan gaan we.
We hebben onze twee argumenten en nu kunnen we de voorbeeldfunctie implementeren.
Dus nu wil ik je waarschuwen, dit wordt een beetje technisch, maar ik zal mijn best doen om het uit te leggen.
Dus we beginnen met het maken van de variabele van de simple.
Dit is alleen de variabele die de samples van het geheugen zal bevatten.
Oke.
Zo eenvoudig, gelijk.
En hoe gaan we nu aan deze monsters komen?
Allereerst moeten we ons geheugen nemen, want we krijgen deze monsters uit ons geheugen.
Dan hebben we waarschijnlijk de batchgrootte nodig omdat de monsters die we willen hebben, batchgrootte-elementen
bevatten.
Dus we hebben geheugen nodig, we hebben batchgrootte nodig, en dan hebben we wat taartbrander of python-trucs nodig om het goede
formaat van deze monsters te krijgen.
Dus wat ik ga doen, ik ga de regel code schrijven en dan ga ik het element voor
element uitleggen.
Dus laten we het doen.
Ik begin met het nemen van een zip-functie.
Ik ga binnenkort uitbreiden.
Wat het doet en van binnen is de functie.
Ik ga een ster toevoegen.
Die ga ik ook uitbreiden.
De ster en willekeurig.
Dat monster, zo willekeurig, zoals je misschien al geraden had, is de willekeurige bibliotheek die we hier importeren.
Dat is dus de belangrijkste reden waarom we deze willekeurige bibliotheek moesten importeren omdat we enkele willekeurige steekproeven
namen.
Dus van deze willekeurige bibliotheek gaan we de voorbeeldfunctie gebruiken.
Dit zijn dus onze variabelen en dit is een functie.
Dus ik ga wat haakjes toevoegen.
En nu, zoals je kunt zien, is sample een functie en moeten we wat argumenten gebruiken.
Dus zoals je kunt zien, is het eerste argument zelf en eigenlijk sprekend over zelf, dit
komt overeen met zelfgeheugen, het geheugen van ons toekomstige exemplaarobject van onze herhalende geheugentest.
Dus ik ga hier zelf die herinnering toevoegen.
En dan is het tweede argument, zoals je misschien al geraden had, de grootte van de batch die we willekeurig
uit ons geheugen willen halen en dat we het een naam hebben gegeven die zo groot is.
Het tweede argument is dus de batchgrootte.
Oke.
Dus de regel code wordt getypt en nu ga ik uitleggen wat het doet.
Dus eerst en vooral, met deze willekeurige punt, eenvoudige functie, namen we enkele willekeurige
steekproeven uit het geheugen met een vaste batchgrootte.
Dus dat is begrijpelijk, maar wat doet deze Zipp-winkelfunctie dan?
Nou, er is geen mysterie aan.
Het is net als de hervormfunctie.
Dus, bijvoorbeeld, ik ga hier iets toevoegen om uit te leggen dat ik het ga verwijderen.
Laten we zeggen dat we bijvoorbeeld een lijst hebben met de volgende elementen.
Bijvoorbeeld eerst één, twee, drie en dan het tweede element, vier, vijf, zes.
We hebben dus een lijst van twee tupels van drie elementen, één, twee, drie en vier, vijf, zes.
Als ik de Z-functie toepas met de ster erop, wat wordt het dan?
Dus de Zipp-sterrenlijst wordt gelijk aan een nieuwe lijst, maar met een andere vorm.
En deze andere vorm wordt een vier, dan twee, drie en dan vijf, zes.
Oke.
Dat is dus precies wat het doet.
Het hervormt gewoon je lijst.
Oké, dus nu je begrijpt wat deze Zipp-sterrenlijst doet, laten we nu uitleggen waarom we het moeten
doen.
Dus, zoals je hebt begrepen, gaan we de gebeurtenissen aan het geheugen toevoegen en de gebeurtenissen hebben de
vorm, eerst de staat, dan de actie en dan de beloning.
Maar voor ons algoritme willen we dit formaat niet.
We willen eigenlijk dat onze voorbeelden het volgende formaat hebben, een formaat dat bestaat uit drie voorbeelden, een eenvoudig
voor de staat, een eenvoudig voor de acties en een eenvoudig voor de beloning.
Laten we bijvoorbeeld zeggen dat deze één, twee, drie toestand één is, actie één, beloning één, en dan
toestand twee, actie twee.
En we waren te goed, wat we willen is één batch voor elke één, maar voor staat één en staat twee, één van de
match voor actie, één in actie twee en een derde batch voor beloning één en we waren twee.
Dat is gewoon een indeling die we als volgende zullen verwachten, want dan zullen we deze batches in
een PI tahj-variabele wikkelen en een deel dat ik me zal herinneren is een variabele die zowel een Tenzer als een verloop
bevat.
En dat is om te kunnen differentiëren naar zijn antwoord, om te kunnen differentiëren naar
zijn antwoord.
We hebben de structuur nodig van een variabele die intenser en een gradiënt bevat.
Nogmaals, zo werkt PI Torch.
Dus om samen te vatten, we maken één batch voor elk van de acties en beloningen van de staat en dan
gaan we elk van deze overeenkomsten afzonderlijk in een aantal tightwads-variabelen plaatsen, die elk een gradiënt krijgen, zodat we
uiteindelijk in staat zullen zijn om elk van hen onderscheiden.
Oke.
Dat is dus het doel van de Z-functie.
Dus laat ik deze reactie maar verwijderen.
En nu hoeven we alleen nog de monsters terug te sturen.
Dus, zoals ik zojuist heb uitgelegd, kunnen we de monsters niet rechtstreeks retourneren om de eenvoudige reden
dat we de monsters erin willen plaatsen met een toortsvariabele.
Dus om dit voor elk van de voorbeelden te doen, gaan we de kaartfunctie en deze kaartfunctie gebruiken.
We doen de mapping van de monsters naar toortsvariabelen die een geïntegreerde sensor bevatten.
Zoals je kunt zien, heeft deze kaartfunctie verschillende argumenten.
Het eerste argument is een functie en deze functie wordt de functie die de steekproeven
omzet in enkele tahj-variabelen.
En het tweede argument is waar we deze functie op willen toepassen.
Dus dat zal het argument van deze functie zijn.
En daarom: wat wordt het?
Dat zijn natuurlijk de monsters.
Dus het tweede argument hier zijn de steekproeven, maar laten we dan de functie definiëren waarop we elk
van de steekproeven willen toepassen.
Dus om hier een functie te definiëren, moeten we ze eerst aan de functie geven die Lambda zal aanroepen.
Dat is gewoon een naam en gegeven lambda dan X, wat de variabele van deze functie wordt.
Dus dat is slechts een naam en gegeven voor de variabele.
En toen.
En hier geven we de uitdrukking van de functie.
Dat is wat we willen dat deze lambda-functie teruggeeft.
En dus wat het gaat worden.
Het zou iets moeten zijn dat onze monsters zal omzetten in een martelvariabele.
En om dit te doen, hebben we het al genoemd in enkele eerdere tutorials waar we de variabele functie voor
hebben.
De variabele functie maakt die conversie van een toortssensor naar een variabele die de sensor en
de hellingen bevat.
Dus het eerste dat ik hier ga toevoegen, is een variabele variabele waarbinnen ik X ga converteren
omdat X de eenvoudige zal zijn zodra Lambda op de symbolen wordt toegepast.
Maar dat is niet alles, er is nog een laatste technisch ding dat we moeten implementeren, het is het
feit dat voor elke batch, die in een monster zit, bijvoorbeeld de batch van de acties, een
één, een twee, een drie en de andere acties, we moeten het samenvoegen met betrekking tot de eerste dimensie, die
overeenkomt met de toestanden.
En waarom moeten we deze aaneenschakeling maken?
Het is gewoon om alles goed op elkaar af te stemmen.
Dat wil zeggen dat in elke rij de status, de actie en de beloning overeenkomen met dezelfde tijd t, zodat we uiteindelijk een lijst
met overeenkomsten krijgen die allemaal goed op elkaar zijn afgestemd en elke batch een pad is naar levensvatbaar.
Dus hoe kunnen we deze aaneenschakeling maken als we de kat-functie uit de fakkelbibliotheek moeten gebruiken?
Dus we gaan hier toorts toevoegen waaraan we toevoegen dat wordt toegepast op X, maar dan in deze cat-functie moeten
we de dimensie specificeren met betrekking tot welke we die aaneenschakeling willen maken.
En zoals ik net zei, dit is de eerste dimensie met index nul.
En hier gaan we.
We hebben onze functie klaar.
Deze getalfunctie neemt de monsters, voegt ze samen met betrekking tot de eerste dimensie,
en uiteindelijk zetten we deze sensoren om in enkele tahj-variabelen die zowel een sensor als een gradiënt
bevatten, zodat we later, wanneer we stochastische gradiëntafdaling toepassen, kunnen differentiëren om de gewichten bij
te werken.
Oke.
Dus deze functie is klaar.
En dan hier bij het tweede argument van de kaartfunctie, moeten we specificeren waarop we deze lambda-functie willen
toepassen.
En dat is op al onze monsters die we gebruiken.
We zullen deze lambda-functie op alle monsters toepassen, zodat we uiteindelijk een lijst met overeenkomsten krijgen waarbij elke
overeenkomst wordt toegepast op variabele.
Oke.
Dat was dus best technisch, maar nu werkt alles in ieder geval.
Nou, we zullen deze techniek achteraf niet gebruiken.
We gebruiken het alleen hier.
Dus als je geen diepgaand begrip wilt hebben van de technische details hier, dan is dat prima.
U kunt deze drie regels code gewoon kopiëren om uw geheugen te testen.
Als je een kunstmatige intelligentie wilt maken met by Tahj, dan is het zoals je wilt.
Maar nu is het goede nieuws dat we klaar zijn met deze replay memory class experience replay is nu geïmplementeerd en
we kunnen doorgaan naar de volgende en laatste klas, die het hele dequeue leermodel zal zijn.
Dus in dit deep learning-model hebben we natuurlijk een netwerk dat ervaring toevoegt om te spelen
en dan de rest van het deep learning-algoritme.
Het wordt dus een veel grotere klas.
We gaan ongeveer 10 functies maken, maar dat is alleen omdat we dit stap voor stap doen, zodat je beter kunt begrijpen
wat er aan de hand is.
Ik kan dus niet wachten om ons deep learning-model te implementeren.
En tot dan.
En ik.