Hallo en welkom bij deze Python-tutorial.
Oké, dus vandaag zullen we de update-functie maken, die alles zal updaten wat er is
om te updaten zodra het oog een nieuwe staat bereikt.
Dus als het een nieuwe fase bereikt, weet je, moeten we de actie bijwerken.
De laatste actie wordt de nieuwe actie die werd weergegeven, maar ook de laatste status die de nieuwe
status wordt.
En tot slot, het laatste woord dat het nieuwe woord wordt dat we krijgen als we de actie spelen.
Dus dat is het logische pad dat loopt direct na het selecteren van een actie, we moeten alle
elementen van de overgangen bijwerken.
En natuurlijk krijgen we een nieuwe transitie.
Dus we zullen deze nieuwe overgang naar het geheugen moeten openen.
En tot slot zullen we ook ons beloningsvenster bijwerken, weet je, om de evolutie van hoe de training verloopt
en hoe de verkenning verloopt, in de gaten te houden.
Maar het belangrijkste voor u om te begrijpen is dat we nu eindelijk een verbinding
kunnen maken tussen de A. L. die we nu op onze kaart
implementeren, want als we teruggaan naar onze kaart, onthoud, er is een grote updatefunctie in de gameklasse.
Dus dat is waar we het spel met de auto maken en bepalen hoe de auto moet worden gestraft als
hij een fout maakt.
Maar in deze spelklasse merken we deze updatefunctie op en in deze updatefunctie merken we dat
deze lijnactie gelijk staat aan hersenen.
Die update, minder beloning, minder signaal.
En eigenlijk is dit precies wat we gingen maken.
We staan op het punt deze update-functie te maken die de laatste beloning en het laatste signaal zal krijgen om de volgende actie
te laten spelen.
We zullen dus niet alleen alle verschillende elementen van de overgang updaten, maar meestal zullen we de actie spelen die we
zouden moeten spelen wanneer we de laatste beloning en het laatste signaal krijgen.
En dus zullen we in deze updatefunctie natuurlijk de functie Select Action gebruiken die we zojuist hebben geïmplementeerd voordat
we de functie Select Action integreren in de toekomstige updatefunctie die we gaan maken om de
te spelen reactie te selecteren, naast het maken van alle de updates.
Dus dat is heel belangrijk om deze verbinding met de kaart te maken.
Nu.
Wat we gaan maken is uiteindelijk de verbinding tussen onze AI en de game, de game die we in deze
klas maken.
Dus wat we nu kunnen doen, is deze update direct uitvoeren.
Laatst waren we het laatste signaal, want dat is precies de functie die we hier met deze twee argumenten zullen maken.
En even ter herinnering: de hersenen zijn ons object.
Dat is het doel van de verschillende klasse.
Dus wat we nu gaan doen, is dat we deze update gaan kopiëren, minder beloning, minder signaal, en dat
wordt onze volgende functie die we maken.
En daarom baseer ik dat hier.
Wees dan gewoon voorzichtig.
Ik zou alleen wat andere namen willen geven dan de namen die we hier hebben.
Weet je, we hebben hier minder beloning.
En ik wil deze laatste beloning niet verwarren met deze die gevaarlijk kan zijn.
Dus ik ga het laatste woord hier vervangen door beloning.
En trouwens, hetzelfde voor het laatste signaal.
Laten we gewoon een signaal of zelfs een nieuw signaal plaatsen om aan te geven dat we uw gegevens willen maken wanneer we een
nieuwe staat bereiken en daarom een nieuw signaal krijgen.
Maar dan, natuurlijk, deze beloning hier zal de laatste beloning zijn die we hier krijgen, weet je, wanneer we naar een of andere
verzending gaan of erger, te dicht bij een rand van de kaart komen, daar definiëren we de laatste
beloning .
De beloning is de invoer van de update-functie.
Dus daarom hebben we hier minder beloning.
Maar hier geef ik gewoon een andere naam voor het argument beloning om het niet mee te verwarren.
Laatste woord hier.
Oke.
Dit is dus de Abdeh-functie.
En laten we er nu naar binnen gaan en deze twee dingen doen.
Dat is update's alle elementen van onze overgang en, natuurlijk, selecteer de actie.
OK, dus wat moeten we eerst updaten?
Welnu, zoals u begreep, willen we de updates uitvoeren wanneer een nieuwe staat wordt bereikt.
Dus het eerste wat we gaan updaten is natuurlijk deze nieuwe staat.
Dat is de nieuwe staat die we bereiken.
Dus ik ga deze nieuwe staat noemen, nieuwe staat en dan gelijk.
En hoe kunnen we deze nieuwe staat krijgen?
Dat hangt natuurlijk af van het signaal, het nieuwe signaal dat de sensoren zojuist hebben gedetecteerd.
En ter herinnering: de status is het signaal zelf dat bestaat uit de drie signalen van de sensoren, signaal
één, signaal twee en signalen drie plus oriëntatie en minus oriëntatie.
Dat is onze staat.
Zorg er dus voor dat u begrijpt dat het signaal de status is.
Maar op dit moment is het een eenvoudige lijst van vijf elementen.
En aangezien dit de input van het neurale netwerk zal zijn, onthoud, we moeten het omzetten in
een fakkelsensor.
Dat is dus precies wat we nu gaan doen.
We nemen onze fakkelbibliotheek en nemen dan.
De Tenzer-klasse, daar gaan we, die ons nieuwe signaal zal omzetten in een toortssensor, dan is het beter om ervoor te zorgen
dat alle elementen van de toortssensor drijvers zijn.
Dus ik ga een typeconversie maken om ze om te zetten in drijvers zoals deze en dan eindelijk proberen de reflex te
krijgen van wat we vervolgens moeten doen.
Het is natuurlijk om die nep-dimensie te creëren, om een dimensie toe te voegen die overeenkomt met de wedstrijd.
En we doen dit natuurlijk met de on-squeeze-functie waarin we de index moeten invoeren van deze nep-dimensie die we
willen hebben voor de match, die nul is.
Oke.
En nu hebben we onze nieuwe staat samengesteld uit de drie signalen van de drie sensoren, plus
oriëntatie, minus oriëntatie.
En dat hangt natuurlijk af van het nieuwe signaal dat we op dit moment krijgen met deze
updatefunctie.
Laatste signaal, we krijgen de drie signalen plus oriëntatie, minus oriëntatie.
En ter herinnering: de drie signalen zijn de zenddichtheid die rond de sensoren wordt gedetecteerd.
Oke.
Dus we hebben net onze nieuwe staat gekregen.
Dus dat betekent dat we de nieuwe fase hebben bereikt en nu moeten we de volgende update maken.
Dus wat moeten we volgens jou nu updaten?
Wat zou het logische zijn om nu te updaten na het bereiken van deze nieuwe fase?
Welnu, wat we nu moeten bijwerken, is het geheugen, omdat het elke keer is dat een overgang
is samengesteld uit de huidige staat als de volgende staat T plus één, de beloning en de actie 80.
En op dit moment hebben we al S-T.
We hebben er al en we hebben er al 80.
En we hebben net het laatste element van de overgang als plus één.
Dus door deze nieuwe staat ESTIE plus één te krijgen, krijgen we een geheel nieuwe overgang van het geheugen en daarom moeten
we deze geheel nieuwe overgang aan het geheugen toevoegen, want dat is gewoon onze volgende
overgang.
Daarom moeten we het geheugen nu bijwerken.
En daarom, wat ik ga doen, is mijn geheugenobject nemen dat is gemaakt van de replay-geheugenklasse en daarom
ga ik mezelf nemen.
Dat geheugen verwijst naar het object, maar aangezien ik zelf gebruik, moet ik het zelf opnemen in de
update-functie.
Dus nu kun je echt zien waar het zelf voor is.
Het is telkens wanneer je een variabele gebruikt die je hebt gemaakt en geïnitialiseerd, uiteindelijk functioneert het zo zelf dat
geheugen.
En nu moeten we het updaten.
En hoe gaan we dat volgens jou updaten?
Het goede nieuws is dat we daar al een functie voor hebben gemaakt.
Het is de push-functie die een evenement of een overgang naar het geheugen bijwoont.
Dat is dus precies wat we gaan gebruiken.
Nu gaan we de push-functie gebruiken om onze nieuwe overgang die we zojuist hebben gemaakt naar het geheugen door te brengen.
En daarom neem ik hier geen gelijke omdat we een methode gaan gebruiken en daarom
kunnen we die push direct gebruiken.
En eerst ga ik de overgang toevoegen, deze nieuwe overgang die we net hebben.
En dat is eerst de laatste date dus zelf die laatste date.
Dus dat is. G. dat is precies deze.
Het bestaat al.
Dan is het volgende element van deze overgang natuurlijk de nieuwe staat die we zojuist hebben bereikt.
En daarom, omdat het niet haalbaar is van de doelstellingen die we in deze functie hebben gemaakt en geïnitialiseerd, plaatsen
we zichzelf hier niet.
We zetten direct de nieuwe staat.
Dan is het volgende element van de overgang de actie en zeggen dat we de laatste actie al hebben, en
dat is dit zelf, de laatste actie hier.
Het is dus natuurlijk gelijk aan nul.
Maar dan wordt het natuurlijk een date met de select action-functie.
Maar dat is deze.
Dus dan is het zelf die laatste handeling.
Maar wees nu voorzichtig.
De elementen die we meenemen in deze transitie zouden allemaal fakkeldansers moeten zijn.
Zoals je kunt zien, is dat het geval voor de laatste staat.
Het is een fakkeldanser.
De nieuwe staat is ook een fakkeldanser.
En dit moet dus hetzelfde zijn voor de actie en dan natuurlijk de beloning.
Maar nu ga je denken, hoe kan het een fakkelconcert zijn, als je bedenkt dat het gewoon een nee is?
Weet je, de actie is nul één of twee, maar in feite is dat geen probleem.
We kunnen deze nul één of twee volleybal nog steeds omzetten in de fakkelcensuur.
Dit wordt precies wat we een lange Tenzer noemen.
De lange is een type, en dat is de spanning die een geheel getal zal bevatten, omdat de laatste sectie een geheel
getal is, het is nul één of twee.
Dus wat we nu gaan gebruiken, is onze bibliotheekfakkel.
Dan gaan we voor de lange termijn.
Het is de lange tensorklasse die een object zal creëren, wat de lange tenzer zelf zal zijn.
En door de functie zelf-laatste actie als invoer te nemen, wordt dit lange Tenzer-object gemaakt, maar het
bevat nog steeds nul één of twee in een lang Tenzer-object.
En dat is gewoon om consistent te zijn met de overgang die alleen censuur zou moeten bevatten omdat we werken met
Torch en we werken met het neurale netwerk.
We moeten dus met censors werken zodat we een fakkellange Tenzer gaan maken en een die conversie moet maken.
We moeten er zeker van zijn dat wat er in deze longkanker zit een geheel getal is.
En om er zeker van te zijn, zelfs als we al weten dat de laatste sectie nul
één of twee is, om er zeker van te zijn dat we dit weer gaan omzetten in typeconversie, zetten we onszelf de laatste actie om in een
geheel getal.
Daar gaan we.
En dan moeten we de integer onbaatzuchtige sectie hier tussen haakjes plaatsen, zodat we nu een lang soort van één element
krijgen, wat deze laatste sectie nul één of twee zelf zal zijn.
Dus het belangrijkste is dat je zo een eenvoudig getal, nul één of twee, omzet in atención met fakkel.
Oké, en dan tot slot, het laatste element van de overgang, en dat is natuurlijk het laatste woord dat
we kregen.
Dus dat is precies het laatste woord voidable dat we hebben gemaakt in de functie die is geïnitialiseerd op nul.
Maar dan wordt het natuurlijk hier in deze code geüpdatet, ofwel wanneer we in een of andere zending gaan, wat een negatieve beloning
is, of als we verder van het doel af komen, die weer, negatieve beloning, als we dichter bij het
doel komen, dat is een positieve beloning en de ergste straf als we te dicht bij een rand van de kaart
komen.
Dat is een vreselijke negatieve beloning, min één, en dat is alles.
Dus laten we dit laatste element van de overgang zelf toevoegen, die beloning, dus ik kopieer dit, plak dat hier
en nu moeten we nog een conversie maken, die natuurlijk precies hetzelfde zal zijn als
deze.
Alleen omdat de beloning geen geheel getal is, maar een float.
Nee, we zullen gewoon een fakkel maken die tensor-conversie.
Maar zonder dat houdt het de haakjes hier omdat, weet je, we eerst het
nummer in een lijst moeten plaatsen en dan zal deze lijst als invoer in de toortsstencilklasse gaan.
Maar dat hoeven we bij conversie niet te maken, omdat de laatste beloning een float-nummer is.
Dus wat we gaan doen is hier simpelweg de toorts, punt, tensor naar dat centrum toe te voegen, dan haakjes tussen
haakjes.
En we gaan de haakjes hier sluiten en we sluiten de haakjes.
Daar gaan we.
Dus om samen te vatten, met de nieuwe staat die we zojuist hebben bereikt en de beloning, observeren we een nieuwe gebeurtenis
van overgang die we aan de herinnering toevoegen.
En deze overgang bevat de laatste staat en stad, de nieuwe staat ESTIE plus één, de laatst
gespeelde actie en de laatste beloning.
Oke.
En nu zijn we goed met onze geheugenupdate.
Dus laten we een korte pauze nemen en we zorgen voor de volgende update in de volgende tutorial.
Tot dan en ik.