Witam i zapraszam do tej opowieści prawie ostateczny tytuł tego modułu.
Zamierzam wyjaśnić główny kod, który wykona całą sprawę, zanim uzyskamy ekscytujące wyniki
i obejrzymy filmy.
Więc to jest główny kod i jak widać, jest to dość krótki.
Zaczynamy od zaimportowania bibliotek i modułów, a także różnych klas i funkcji, które
stworzyliśmy jak Altikriti z naszego pliku modelu.
Funkcja pociągu z pliku pociągu i funkcja testu z pliku testowego i oczywiście
importujemy nasz optymalizator.
Następnie zaczynamy od pierwszej sekcji, w której dostajemy do klasy wszystkie parametry.
A to może być.
Pamiętaj, że to obiekt BRAM, który stworzyliśmy z tej klasy.
Za każdym razem, gdy otrzymujemy parametr taki jak wskaźnik uczenia się, nie jesteśmy obojętni.
Więc przejrzyjmy je szybko.
Ten pierwszy lub tutaj jest wskaźnik uczenia się.
Tak więc, jak widać, wybieramy małe, a oceniacie, że drugi jest parametrem.
Znowu przyjmujemy to jako 0. 39 przyjmujemy parametr OneTel zestaw 1 16 procesów 20 kroków i maks.
Długość 10000.
I mówiliśmy o tym, że jest to parametr, który ustawiliśmy, aby upewnić się, że agent nie utknął w
nieskończoność w stanie środowiska, więc to zatrzyma grę.
Jeśli długość odcinka przekracza tę maksymalną długość i ostatecznie otrzymamy nazwę naszego
środowiska.
Zerwanie wynosi zero.
A przy okazji, możesz także grać w innych środowiskach, zmieniając tutaj nazwę
środowiska.
Więc jeśli chcesz zagrać w inne wersje Breakouta, a nawet w inne gry Atari, możesz po
prostu zastąpić to zerwanie tutaj przez inne gry.
Ale mogę wam powiedzieć, że wideo z breakoutem jest już bardzo trudne.
W porządku, więc wszystkie parametry tutaj.
A następnie jest główny kod dla głównego przebiegu.
A więc zobaczmy, co robimy w tej pierwszej linii.
Ustawiamy jeden wątek na rdzeń.
Następnie w drugim wierszu otrzymujemy wszystkie renderers, wiesz, że tworzysz nowy obiekt klasy
Paramjit, który będzie inicjował wszystkie te parametry tutaj, ponieważ są zmienne dołączone do tego obiektu
BRAM.
Następnie ustawiamy nasiona.
Następnie dostajemy nasze środowisko za pomocą drzewa Utwórz i funkcjonujemy z nazwą naszego środowiska, które
jest zerowe.
Widzisz komórki o tej nazwie, a zatem parametr i nazwa jest całkiem zerowy.
To pozwoli nam wydostać się z otoczenia.
A tak przy okazji, nie jest to zwykły sposób tworzenia środowiska, ale wiesz, jak
poprawić cały proces i poprawić wydajność.
Wykorzystujemy to, aby faktycznie stworzyć zoptymalizowane środowisko i robimy to, wszechświat wszechświatowy jest
pakietem, który zawiera wszystkie pakiety zainstalowane na otwartym silniku.
Cóż, dzięki wszechświatowi otrzymujemy zoptymalizowane środowisko.
Oto, o co tu chodzi.
Następnie otrzymujemy nasz wspólny model, tworząc obiekt z aktywnej klasy krytyków.
Dlatego ważne jest, aby zrozumieć, że ten wspólny model jest modelem współdzielonym przez różnych
agentów.
Mamy różne wątki w różnych kursach.
A mówiąc o zagrożeniach na następnej linii, tutaj pomijany model dzielący pamięć na to, co robimy, przechowujemy model
we wspólnej pamięci komputera, aby wszystkie wątki mogły uzyskać do niego dostęp, nawet jeśli
są w innym kursie.
Więc to właśnie tutaj robimy.
Aby to umożliwić, otrzymujemy nasz optymalizator połączony z parametrami naszego wspólnego modelu oraz z szybkością
uczenia się jednego punktu lub jednego.
I znowu ważne jest, aby zrozumieć, że optymalizator jest również udostępniony, ponieważ działa
on we współużytkowanym modelu i mówi, że w następnej linii zoptymalizowanej pamięci współdzielonej przechowujemy optymalizator w pamięci współdzielonej,
aby wszyscy agenci mogli uzyskać do niego dostęp w celu optymalizacji model.
Następnie inicjujemy nasze procesy, aby proces testowy nie aktualizował udostępnionego modelu, ale po prostu używa go do wypróbowania
go w jednej części i wydrukowania wyniku i nagrania wideo.
Dokładnie to robi się tutaj z testem Target equals.
To jest proces testowy, a ten proces jest tutaj wycięty z tortur, że wiele wstępnego przetwarzania.
Więc tutaj i co robi to, że w zasadzie uruchamia funkcję na niezależnym wątku.
Tak więc, kiedy robimy restart, rozpoczynamy nowy proces, który był początkiem ubiegłego roku w tym czasie.
A następnie z tym procesem do dołączenia P dodajemy proces do listy procesów.
I na koniec w tej pętli robimy pętlę, aby uruchomić wszystkie inne procesy, które zostaną przeszkolone
przez aktualizację modelu współdzielonego.
I to w zasadzie dzieje się w ostatnich liniach kodu tutaj.
Jeśli więc nie chcesz wdawać się w szczegóły, ważne jest, aby to
działało w optymalny sposób i dlatego wszyscy powinniśmy dobrze wykonać ten kod i
mieć wyszkolony model, a ostatecznie obejrzeć wyniki.
Więc nie mogę się doczekać, aby to zrobić.
To będzie ekscytujące.
Postaram się teraz znaleźć ludzi, abyśmy wszyscy mogli to wspólnie oglądać.
I tak do następnego razu I.