Cześć i witamy w tutorialu Python.
W porządku, więc dzisiaj zrobimy funkcję aktualizacji, która zaktualizuje wszystko, co jest do tej
pory, gdy tylko oka dojdzie do nowego stanu.
Kiedy osiągnie nowy etap, wiesz, że musimy zaktualizować akcję.
Ostatni to właściwie nowa gra, która właśnie została zagrana.
Ale także ostatnia data, która staje się nowym stanem.
I wreszcie ostatnie słowo, które staje się nowym słowem, które otrzymujemy, gdy gramy akcję.
Tak więc jest to logiczna ścieżka, która dzieje się zaraz po wybraniu akcji.
Musimy zaktualizować wszystkie elementy przejść.
I oczywiście dostaniesz nowe przejście.
Musimy więc dołączyć to nowe przejście do pamięci.
I w końcu zaktualizujemy lub nagrodzimy okno, aby wiedzieć, jak przebiega
szkolenie i jak przebiega eksploracja.
Ale najważniejsze, abyś zrozumiał, że teraz możemy w końcu stworzyć związek pomiędzy sztuczną inteligencją,
którą teraz wdrażamy, a naszą mapą, ponieważ jeśli wrócimy do naszej mapy, pamiętaj, że ta
funkcja Beiji jest włączona do klasy gry i Właśnie tam robiliśmy grę z samochodem i określiliśmy, w
jaki sposób samochód powinien zostać ukarany, gdy popełni błąd.
Ale w tej klasie gry zauważyliśmy tę funkcję aktualizacji i w tej funkcji aktualizacji
zauważyliśmy tę akcję linii, ponieważ aktualizacja mózgu na końcu pracowaliśmy mniej sygnału.
I faktycznie to właśnie zamierzamy zrobić.
Niedługo uruchomimy tę funkcję aktualizacji, która zajmie ostatnie słowo i ostatni sygnał, aby uzyskać kolejną akcję
do odegrania.
Nie tylko zaktualizuje wszystkie różne elementy przejścia.
Ale przede wszystkim będziemy grać akcję, którą powinniśmy zagrać, gdy otrzymamy ostatnie
słowo i ostatni sygnał, więc oczywiście w tej funkcji aktualizacji użyjemy właśnie wybranej funkcji
działania, zanim zintegrujemy funkcję wyboru akcji w przyszłą funkcję aktualizacji, którą zamierzamy
wprowadzić, aby wybrać kierunek gry oprócz robienia wszystkich aktualizacji.
Tak więc bardzo ważne jest teraz nawiązanie tego połączenia z mapą.
To, co zaraz zrobimy, to połączenie naszego oka z grą, którą tworzymy w
tej klasie.
Teraz możemy wykonać tę aktualizację bezpośrednio.
Ostatni byliśmy mniejszym sygnałem, ponieważ taka jest właśnie funkcja, którą będziemy wykonywać za pomocą tych dwóch argumentów
tutaj.
I podobnie jak szybkie przypomnienie mózgu jest naszym obiektem sztucznej inteligencji, który jest obiektem klasy Dejuan.
Więc teraz zrobimy, że skopiujemy tę aktualizację mniejszym sygnałem dźwiękowym, a to będzie nasza
kolejna funkcja, którą tworzymy.
A zatem i wklejając to tutaj, aby zachować ostrożność, chciałbym podać trochę inne nazwy
niż te, które mamy tutaj.
Wiesz, że mamy tu ostatnie słowo i nie chcę mylić tego ostatniego słowa z tym.
To może być niebezpieczne.
Zamierzam zastąpić ostatnie słowo tutaj słowem.
A przy okazji tak samo dla mniejszego sygnału, po prostu daj sygnał, a nawet nowy sygnał, aby określić, że wiesz,
że chcemy to zmierzyć, gdy osiągniemy nowy stan, a zatem otrzymamy nowy sygnał.
Ale oczywiście to słowo tutaj będzie ostatnią nagrodą, którą tu otrzymamy.
Wiesz, kiedy wchodzisz na piasek lub gorzej docierasz zbyt blisko krawędzi mapy, gdzie
definiujemy ostatnie słowo.
To ostatnie słowo będzie wprowadzeniem funkcji aktualizacji, dlatego mamy tu ostatnie słowo.
Ale właśnie tutaj podaję inną nazwę dla argumentu.
Nie chcemy tego mylić z ostatnim słowem tutaj.
W porządku, więc to jest funkcja aktualizacji.
A teraz wejdźmy do środka i zróbmy te dwie rzeczy.
To są dane wszystkich elementów naszego przejścia i oczywiście wybierz akcję.
OK, więc co musimy najpierw zaktualizować.
Jak rozumiesz, chcemy umówić się na randkę, kiedy osiągniemy jakikolwiek stan.
Tak więc pierwszą rzeczą, którą będziemy aktualizować, jest oczywiście ta wiadomość, że to jest wiadomość, do której docieramy.
Więc zamierzam nazwać ten nowy stan nowym państwem, a potem to nastąpi.
A więc jak możemy uzyskać ten nowy stan.
Oczywiście zależy to od sygnału, jaki nowy sygnał wykrywają właśnie czujniki.
I jako przypomnienie stan jest samym sygnałem złożonym z trzech sygnałów, że czujniki sygnalizują jeden
sygnał do sygnalizowania trzech plus orientacji i orientacji ujemnej.
To nasz stan.
Dlatego upewnij się, że sygnał jest stanem.
Ale teraz jest to prosta lista pięciu elementów.
A ponieważ będzie to sygnał wejściowy do wykonania całej tej pracy, pamiętaj, że musimy ją przekonwertować na
czujnik palnika.
Tak właśnie zrobimy teraz.
Weźmiemy naszą bibliotekę pochodni, a potem weźmiemy tam klasę tensorów, która zamieni nasz nowy sygnał w gęstszą
pochodni, lepiej więc upewnić się, że wszystkie elementy pochodni, które mają odpowiedzieć, są pływakami, więc
zamierzam Wykonaj konwersję typu, aby przekonwertować je do postaci pływających w ten sposób.
A potem wreszcie spróbuj odruchu tego, co musimy zrobić dalej.
Oczywiście do stworzenia tego fałszywego silnika dodajemy diamenty i korespondujemy
z partią, a robimy to oczywiście z funkcją ściśnięcia, do której musimy wstawić indeks tego dużego diamentu.
I chcemy dla partii, która wynosi zero.
W porządku.
Teraz mamy nowe stany złożone z trzech sygnałów z trzech czujników plus
orientacja minus orientacja i oczywiście zależy to od nowego sygnału, który otrzymujemy dzięki tej funkcji aktualizacji.
Dokładnie w tym momencie ostatni sygnał otrzymujemy trzy sygnały.
Więc dodatkowo minus lub dodatkowo i jako przypomnienie trzy sygnały to gęstość czujnika
wykrytego wokół czujników.
W porządku.
Więc mamy nowy etap, więc oznacza to, że osiągnęliśmy nowy etap i teraz musimy dokonać kolejnej aktualizacji.
Więc według ciebie, co musimy teraz zaktualizować.
Jaka byłaby logiczna rzecz do tej pory, po osiągnięciu tego nowego stanu.
Cóż, teraz potrzebujemy pamięci.
Dlaczego.
Dzieje się tak, ponieważ za każdym razem t przejście składa się z obecnego stanu Estey następnego dnia jako
tipis, gdy nagrodą jest arti i akcja 80.
A teraz mamy już S-T, mamy już nasz zespół i mamy już 80 i
właśnie dostaliśmy ostatni element przejścia Estep plus jeden.
Tak więc, zdobywając ten nowy stan tak głęboki jak jeden, otrzymujemy jedno całkowicie nowe przejście pamięci i dlatego musimy dołączyć
to zupełnie nowe przejście do pamięci, ponieważ jest to po prostu nasza następna transformacja.
Dlatego właśnie mamy tę pamięć teraz.
I dlatego zamierzam zrobić, że mój obiekt pamięciowy zostanie utworzony z klasy
pamięci powtórzeń i dlatego zamierzam zabrać swoją pamięć do obiektu.
Ale odkąd używam siebie, muszę włączyć jaźń w tę funkcję.
Teraz możesz naprawdę zobaczyć, do czego służy ta jaźń.
Za każdym razem, gdy użyjesz jednej zmiennej, która została utworzona i zainicjalizowana w funkcji init, będzie to pamięć.
A teraz to zrobiliśmy.
I według ciebie, jak to zaktualizujemy.
Dobra wiadomość jest taka, że już zrobiliśmy funkcję, aby to zrobić.
Jest to funkcja push, która blokuje wydarzenie lub przejście do pamięci.
Właśnie tego teraz będziemy używać.
Zamierzamy użyć funkcji wypychania do zapisania naszej nowej transformacji, którą właśnie wprowadziliśmy do pamięci i
dlatego nie biorę równych sobie, ponieważ zamierzamy użyć tej metody i dlatego możemy
bezpośrednio użyć tego pchnięcia.
Najpierw dodam przejście, które właśnie otrzymaliśmy, i to jest ostatnia
data.
Więc siebie, ta ostatnia randka.
To jest S-T To właśnie to już istnieje.
Kolejnym elementem tego przejścia jest oczywiście nowy stan, który właśnie osiągnęliśmy.
A zatem, ponieważ nie jest on wykonalny z obiektu, który stworzyliśmy i zainicjowaliśmy w tej funkcji init,
nie stawiamy się tutaj.
Bezpośrednio umieszczamy Newstead, następnie kolejnym elementem transformacji jest akcja i mówimy, że mamy już ostatnią sekcję, która
jest tą jaźnią, tą ostatnią akcją tutaj.
Więc oczywiście jest równa zero.
Ale wtedy oczywiście zostanie zaktualizowany za pomocą funkcji wyboru akcji.
Ale to jest ten.
Więc to jest samo, to ostatnie działanie.
Ale teraz bądź ostrożny.
Elementy, które zostały uwzględnione w tym przejściu, powinny być wszystkie podpalonymi odpowiedziami.
Jak widać, tak jest w przypadku ostatniej daty.
To czujnik palnika.
Nowy stan jest również podpaloną odpowiedzią.
I tak musi być to samo dla akcji, a następnie oczywiście z nagrody.
Ale teraz pomyślisz, jak to może być podpalona odpowiedź, biorąc pod uwagę, że to po prostu liczba.
Wiesz, że akcja to 0 1 lub 2.
Ale w rzeczywistości to nie problem.
Nadal możemy przekształcić tę zmienną 0 1 lub 2 w czujnik palnika.
To będzie właśnie to, co nazywamy długim tensorem.
Long jest typem i jest to tensor, który będzie zawierał liczbę całkowitą, ponieważ ostatnia akcja to
liczba całkowita równa 0 1 lub 2.
Więc teraz weźmiemy naszą bibliotekę torche, a następnie zajmiemy się długą klasą tensorów,
która stworzy obiekt, który sam będzie nieuregulowany.
Przyjmując tę funkcję samo-działania jako dane wejściowe, utworzy on ten długi obiekt tensora, ale nadal
będzie zawierał 0 1 lub 2 w długim tensorze, a to jest zgodne z przejściem, które zawiera tylko tensory,
ponieważ jesteśmy praca z latarką PI i pracujemy z siecią neuronową.
Musimy więc pracować z czujnikami, abyśmy mogli długo czekać na odpowiedź.
I ostatnia konwersja do zrobienia.
Musimy być pewni, że to, co jest w środku tej długiej odpowiedzi, jest liczbą całkowitą i aby
się upewnić, nawet jeśli wiemy już, że ostatnia czynność to 0 1 lub 2, aby upewnić
się, że zamierzamy ponownie dokonać konwersji typu int. ostatnia akcja na liczbę całkowitą.
Idziemy tam, a następnie musimy umieścić tę bezinteresowną liczbę całkowitą w nawiasach właśnie tutaj, abyśmy teraz
otrzymali długi tensor jednego elementu, który będzie ostatnim działaniem 0 lub 1 lub 2.
Kluczową sprawą jest to, w jaki sposób konwertujesz prostą liczbę zero lub dwie na tensor z torche.
W porządku.
I wreszcie ostatni element przejścia i to oczywiście ostatnie słowo, które otrzymaliśmy.
To jest właśnie ostatnia siatkówka, którą stworzyliśmy w każdej funkcji, która została zainicjowana do zera.
Ale oczywiście jest aktualizowany tutaj, w tym kodzie, albo gdy przechodzimy do jakiegoś sensu, który jest negatywnym słowem,
albo gdy oddalamy się od celu, który jest ponownie negatywną nagrodą.
Jeśli zbliżyliśmy się do celu, który jest pozytywną nagrodą i najgorszą karą, jeśli znajdziemy się zbyt
blisko krawędzi mapy. Cóż, to straszne negatywne słowo minus jeden.
I to jest.
Dodajmy więc ten ostatni element przejścia, by samokierować słowo.
Więc kopiuję to wklejanie tutaj i teraz musimy dokonać kolejnej konwersji, która będzie oczywiście dokładnie taka
sama jak ta tylko dlatego, że słowo nie jest liczbą całkowitą, ale liczbą zmiennoprzecinkową.
Zrobimy po prostu pochodnię konwersji tensorów, ale bez tego zachowamy tutaj nawiasy, ponieważ wiesz najpierw, że
musimy umieścić numer na liście, a potem ta lista pójdzie i umieści pochodnię w klasie,
ale nie mamy aby to zmienić, ponieważ ostatnie słowo jest liczbą zmiennoprzecinkową.
To, co mamy zamiar zrobić, to po prostu dodać tutaj tensor torche dot spalony tensor, a następnie nawiasy nawiasów.
I zamierzamy zamknąć tutaj nawiasy i zamknąć nawias.
No to jedziemy.
Podsumowując Co powiedziałeś, że właśnie osiągnęliśmy i słowo, które obserwujemy, to nowe wydarzenie przejścia, które
dodajemy do pamięci.
To przejście zawiera ostatnią datę i nowy stan to tipis, gdy ostatnia akcja
gra 80, a ostatnie słowo Archie.
W porządku.
A teraz idziemy z naszą pamięcią dat.
Zróbmy więc krótką przerwę, a my zajmiemy się kolejną aktualizacją w następnym samouczku.
Do tego czasu I.