Hallo en welkom bij deze tutorial, bijna de laatste tutorial van deze module.
Ik ga gewoon de hoofdcode uitleggen die het hele ding zal uitvoeren voordat we de opwindende resultaten krijgen
en de video's bekijken.
Dit is dus de hoofdcode.
En zoals je kunt zien, is dit vrij kort.
We beginnen met het legen van de bibliotheken en de modules en ook de verschillende klassen en
functies die we hebben gemaakt, zoals acto-kritiek uit ons modelbestand, de treinfunctie uit het treinbestand en zijn functie uit het
testbestand.
En natuurlijk importeren we onze optimizer.
Dan beginnen we met de eerste sectie waar we in een klasse komen, alle parameters, en dit is dit
programma.
Onthoud dat dit het object is dat we uit de klasse van dit programma hebben gemaakt telkens wanneer we een parameter hebben
zoals de leersnelheid, gamma of tau.
Dus laten we ze snel doornemen.
Deze eerste hier is het leertempo.
Dus zoals je ziet, kiezen we voor een klein leertempo.
De tweede is de gammaparameter.
Nogmaals, we nemen het als een punt negenennegentig.
We nemen één parameter, een set van zestien processen, 20 stappen, een maximale lengte van tienduizend.
Vergeet niet dat we daarover spraken.
Dit is de parameter die we instellen om ervoor te zorgen dat de agent niet voor onbepaalde tijd vast komt te zitten in een toestand van
de omgeving.
Dus dit zal het spel stoppen als de lengte deze maximale lengte overschrijdt.
En uiteindelijk krijgen we natuurlijk de naam van onze omgevingsdoorbraak V0 nul.
En trouwens, je kunt ook in sommige andere omgevingen spelen door deze naam van de omgeving hier te veranderen.
Dus als je een aantal andere breakout-versies of zelfs een aantal andere Atari-games wilt spelen, nou,
dan kun je deze breakout V0 hier eenvoudig vervangen door andere games.
Maar ik kan je vertellen dat het uitbreken van V0 al een hele uitdaging is.
Oke.
Dus alle parameters hier en daar is de hoofdcode voor de hoofdrun.
En dus hier, laten we eens kijken wat we doen in deze eerste regel.
We stellen één draadkern in.
Vervolgens krijgen we in de tweede regel al onze parameters door een object van de parameterklasse te maken,
die al deze parameters hier zal ophalen en initialiseren omdat er variabelen aan dit parameterobject zijn
gekoppeld.
Dan stellen we het zaad in, dan gebruiken we onze omgeving om Attari te creëren en te functioneren met de naam van
onze omgeving, die nul opbreekt.
Je ziet die eindnaam en dus parameters en naam is Bergkamp nul.
Dus dat brengt ons in de omgeving van uitbraak.
En trouwens, dit is niet de gebruikelijke manier om een omgeving te creëren, maar, weet
je, om het hele proces te verbeteren en de prestaties te verbeteren terwijl we dit gebruiken om daadwerkelijk een geoptimaliseerde omgeving te creëren.
En dit doen we dankzij Univers Universe is een pakket dat wordt geleverd met alle pakketten die u hebt geïnstalleerd bij het
openen van IJM.
Welnu, dankzij Universe krijgen we een geoptimaliseerde omgeving.
Dit is waar het hier allemaal om draait.
Vervolgens krijgen we ons gedeelde model door een object van de activiteitsklasse te maken, en dus is het hier belangrijk om te
begrijpen dat dit gedeelde model het model is dat door de verschillende agenten wordt gedeeld.
Dus we hebben verschillende threads in verschillende cursussen.
En over discussies gesproken op de volgende regel hier, gedeeld model dat geheugen deelt.
Wat we doen, is dat we het model opslaan in het gedeelde geheugen van de computer, zodat alle threads er toegang toe kunnen krijgen,
zelfs als ze zich in een andere koers bevinden.
Dus dat is wat we hier doen.
Dit is om dit mogelijk te maken.
Vervolgens krijgen we onze optimizer gekoppeld aan de parameters van ons gedeelde model en met de leersnelheid van
0. 01.
En nogmaals, het is belangrijk om te begrijpen dat de optimizer ook wordt gedeeld omdat deze gaat werken op
het gedeelde model.
En hetzelfde geldt voor de volgende regel naar het stoelgeheugen, we slaan de optimizer op in het gedeelde geheugen zodat alle agenten er toegang
toe kunnen krijgen om het model te optimaliseren.
Vervolgens initialiseren we onze processen zodat het testproces het gedeelde model niet bijwerkt, maar het alleen gebruikt om het op één onderdeel te
proberen en de partituur af te drukken en de video's op te nemen.
Dus dat is precies wat hier wordt gedaan met Target is gelijk aan test.
Dat is het testproces.
En dit proces hier wordt afgesneden van naar die meervoudige verwerking.
Dus hier en wat het doet, is dat het in feite een functie uitvoert op een onafhankelijke bedreiging.
Dus als we dan beginnen, starten we een nieuw proces, dat hier op dat moment geïnitialiseerd was.
En dan met dit proces dat Appen P is, voegen we het proces toe aan de lijst met processen.
En tot slot, in deze lus hier, doen we gewoon een lus om alle andere processen uit te voeren die zullen worden getraind door
het gedeelde model bij te werken.
En dat is eigenlijk wat er gebeurt in de laatste regels code hier.
Dus als je niet in de details wilt treden, is het belangrijk om te begrijpen dat dit de processen
op een optimale manier zal laten verlopen en daarom zouden we allemaal goed moeten zijn om deze code uit te voeren en
een getraind model te hebben en uiteindelijk bekijk de resultaten.
Dus ik kan niet wachten om dat te doen.
Dit gaat best spannend worden.
Ik zal nu chiral proberen te vinden, zodat we het allemaal samen kunnen bekijken.
En dus tot de volgende keer, geniet van I.