Cześć i witamy w tutorialu Python.
W porządku mamy ostatnią funkcję do implementacji w naszej klasie pamięci powtórek.
To jest prosta funkcja i oczywiście chcemy pobrać losowe próbki z naszej pamięci.
I dlatego funkcja ta zwróci te losowe próbki.
W porządku, więc wejdźmy do tego.
Nazwiemy to prosto.
No to ruszamy.
Ta funkcja pobiera dwa argumenty jako dane wejściowe.
Pierwszy jak zwykle sam nasz przyszły obiekt do powtórzenia klasy pamięci, a drugim argumentem jest próba
odgadnięcia.
Cóż, pobieramy próbki o ustalonym rozmiarze i dlatego musimy wybrać rozmiar dla próbek, a dokładniej
nazywamy to wielkością partii.
To jest nazwa, którą zamierzamy nadać naszemu drugiemu argumentowi wielkości partii.
I oto idziemy.
Mamy nasze dwa argumenty i teraz możemy zaimplementować prostą funkcję.
Więc teraz chcę cię ostrzec, że to będzie trochę techniczne, ale postaram się wszystko wyjaśnić.
Zaczniemy od utworzenia zmiennej próbek.
Jest to tylko zmienna, która będzie zawierała próbki pamięci.
W porządku, tak proste jest równe.
A więc jak mamy zdobyć te próbki.
Przede wszystkim musimy wziąć naszą pamięć, ponieważ pobieramy próbki z naszej pamięci.
Wtedy prawdopodobnie będziemy potrzebować wielkości partii, ponieważ próbki będą zawierały wielkość partii
Elona.
Potrzebujemy pamięci, potrzebujemy partii, a następnie potrzebujemy trochę torche lub sztuczek żubrów, aby uzyskać dobry
format tych próbek.
Więc co zamierzam zrobić, napiszę linię kodu, a następnie wyjaśnię ten element
po elemencie.
Więc zróbmy to.
Zaczynam od skorzystania z funkcji zip, wyjaśnię bardzo szybko, co robi.
Wewnątrz tej funkcji dodam gwiazdę.
Mam zamiar również to rozwinąć.
Gwiazda i przypadkowe myślenie Centralne, tak przypadkowe, jak się domyślasz, to losowa biblioteka, którą tutaj
zaimportowaliśmy.
To główny powód, dla którego musieliśmy zaimportować te losowe biblioteki, ponieważ pobieramy losowe
próbki.
Z tej przypadkowej biblioteki skorzystamy z prostej funkcji.
Więc to są nasze zmienne i to jest funkcja, więc zamierzam dodać trochę nawiasów.
A teraz, jak widać, próbka jest funkcją i musimy podać kilka argumentów, aby można
było zobaczyć pierwszy argument.
A właściwie mówiąc o sobie, odpowiada to pamięci samoprzypadkowej pamięci o naszym przyszłym obiekcie instancji naszej
pamięci powtórkowej dla nas.
Zamierzam tu dodać do siebie tę pamięć, a potem drugi argument, tak jakbyś domyślił się rozmiaru
Bechuany, który losowo wyjął z naszej pamięci i nadaliśmy mu nazwę, która jest wielkością partii.
Więc drugim argumentem będzie Bachche do bani.
W porządku.
Więc wiersz kodu jest wpisany i zamierzam wyjaśnić, co robi.
Przede wszystkim z tą funkcją losowej kropki pobieramy kilka losowych próbek z pamięci
o ustalonym rozmiarze tego rozmiaru.
To zrozumiałe.
Ale co robi ta funkcja gwiazdy Zipp?
Cóż, nie ma w tym tajemnicy.
To jest tak jak funkcja przekształcenia.
Na przykład zamierzam dodać trochę tutaj, aby wyjaśnić, że zamierzam go usunąć.
Załóżmy na przykład, że mamy na przykład listę następujących elementów.
Najpierw jeden dwa trzy.
A potem drugi element.
Cztery pięć sześć.
Mamy więc listę dwóch dubli trzech elementów jeden dwa trzy cztery pięć sześć.
No cóż, jeśli zastosuję funkcję zip z gwiazdką.
Cóż by się stało, że lista gwiazd Zip będzie równa nowej liście, ale o innym
kształcie, a inny kształt będzie jeden dla dwóch, a potem trzech sześciu.
W porządku.
Tak właśnie to robi.
Zmienia tylko twoją listę.
OK, teraz zrozum, co robi lista gwiazd Zipp.
Teraz wyjaśnijmy, dlaczego musieliśmy to zrobić.
Tak jak zrozumieliście, dodamy wydarzenia do pamięci, a wydarzenia mają formę.
Najpierw państwo, następnie akcja, a potem nagroda.
Ale dla naszego algorytmu nie chcemy tego formatu, chcemy, aby nasze próbki miały następujący format.
Format składa się z trzech próbek: jedna próbka dla stanów jedna próbka dla akcji i jedna próbka
dla nagrody.
Powiedzmy na przykład, że ten jeden do trzech jest stanem jednym akcją.
Chcemy jednego, a następnie przekazać do działania dwa, a my mamy się dobrze, czego chcemy, to jedna partia dla każdej partii
dla stanu pierwszego i stan dwóch.
Jedna to gra akcji w akcji drugiej i jedna trzecia, ponieważ byliśmy jeden, a my dwaj.
To jest właśnie ten format, którego można się spodziewać po następnym, ponieważ wtedy będziemy owijać te
partie w ciasto w kierunku okropnego wpływu, o którym zapamięta się, że jest zmienną zawierającą zarówno tensor, jak i
gradient.
A to, aby móc odróżnić w odniesieniu do tensora, aby móc odróżnić
w odniesieniu do intensera w strukturze strasznego tensora zawierającego gradient.
I znowu tak działa Pi Torch.
Podsumowując, tworzymy jedną partię dla każdego działania i nagród państwa, a następnie umieszczamy każdą z
tych wyselekcjonowanych osobno w bajtach, które są straszne, a każdy z nich dostanie gradient,
aby ostatecznie móc rozróżnić każda z nich.
W porządku, więc taki jest cel funkcji Zipp.
Pozwolę sobie tylko usunąć ten komentarz.
A teraz jedyną rzeczą, którą musimy zrobić, to zwrócić próbki.
Tak więc, jak właśnie wyjaśniłem, nie możemy zwrócić próbek bezpośrednio z tego prostego powodu, dla
którego chcemy umieścić próbki w torbe.
Aby to zrobić, dla każdej próbki użyjemy funkcji mapowania, a funkcja
map wykona odwzorowanie z próbek na tortury zmiennych, które będą zawierać tensor i gradient.
Tak więc, jak widać, ta funkcja mapowa przyjmuje kilka argumentów.
Pierwszy argument jest funkcją i ta funkcja będzie funkcją, która zamieni próbki
na pewne zmienne torche.
Drugim argumentem jest to, do czego chcemy zastosować tę funkcję.
Więc to będą argumenty tej funkcji, a zatem, co to będzie.
To będą oczywiście próbki.
Tak więc drugim argumentem będą symbole.
Ale potem określmy funkcję, w której chcemy zastosować.
Każdy z symboli.
Aby zdefiniować tutaj funkcję, musimy najpierw nadać nazwę funkcji, która wywoła lambdę.
To tylko imię i podanie Lendy, a następnie X, która będzie zmienną tej funkcji.
To jest tylko nazwa i podanie zmiennej, a następnie.
I tutaj dajemy wyraz funkcji, której chcemy, aby funkcja lambda powróciła i
zobaczyła, że to będzie dobrze, że ma to być coś, co przekształci nasze próbki w
zmienną pochodni i to zrobi.
Wspomnieliśmy już o tym w niektórych poprzednich samouczkach.
Mamy dla nich funkcję Wojewody.
Głos będzie działał, a my dokonamy konwersji z tancerza pochodni na zmienną, która będzie
zawierała czujnik i największy.
Pierwszą rzeczą, którą tutaj dodam, jest zmienna zmienna, w której zamierzam przekonwertować X,
ponieważ X będzie prostymi, które zostaną zastosowane na próbkach.
Ale to wszystko jest jedna ostatnia rzecz techniczna, którą musimy wdrożyć, to fakt, że dla
każdej partii, która jest zawarta w próbce, na przykład partia działań, a 1
8 2 3 i inne czynności, musimy ją złączyć z szacunkiem. do pierwszego silnika, który odpowiada państwom.
I dlaczego musimy dokonać tej konkatenacji.
Po prostu wszystko musi być dobrze dopasowane.
Oznacza to, że w każdym rzędzie do określenia akcji i nagrody odpowiada ten sam czas t ..
W ten sposób otrzymujemy listę wszystkich partii, które są dobrze wyrównane, a każda partia to ciasto w stosunku do Voivod.
Jak więc możemy dokonać tej konkatenacji?
Cóż, musimy użyć funkcji kotów z biblioteki pochodni.
Więc dodamy tutaj latarkę, do której dodamy, która zostanie zastosowana do X, ale wtedy w tej funkcji
musimy określić wymiar, w odniesieniu do którego chcemy dokonać tego połączenia.
Jak już wspomniałem, jest to pierwszy silnik, który ma era indeksów.
I oto zaczynamy mieć naszą funkcję gotową, Lunda, ta funkcja pobierze próbki łącząc je z silnikiem
po raz pierwszy, a następnie w końcu zamieniamy czujniki na pewne zmienne torche, które
zawierają zarówno tensor jak i gradient tak, że później, kiedy stosuj się do castigate w tym
sensie, że będziemy w stanie rozróżnić, aby mieć wagi danych.
W porządku, więc ta funkcja jest gotowa.
A oto drugi argument funkcji mapy.
Musimy określić, do czego chcemy zastosować tę funkcję i która dotyczy wszystkich naszych próbek.
No to jedziemy.
Zastosujemy tę funkcję lambda na wszystkich próbkach, aby ostatecznie uzyskać listę meczów, w
których każdy mecz jest opłacalny.
W porządku, to było dość techniczne, ale teraz przynajmniej wszystko będzie dobrze działać.
Chcemy skorzystać z tej techniki.
Potem używamy go tylko tutaj, więc jeśli nie chcesz dobrze rozumieć szczegółów
technicznych, dobrze, możesz skopiować te trzy linijki kodu, aby uprościć pamięć, jeśli chcesz zrobić
sztuczną inteligencję za pomocą latarki tak jak chcesz.
Ale teraz dobrą wiadomością jest to, że skończyliśmy z tą powtórką odtwarzania klasy pamięci, odtworzono teraz powtórkę
i możemy przejść do następnej i ostatniej klasy, która będzie całym trybem bezpieczeństwa.
Tak więc w tym modelu będziemy mieć oczywiście naszą sieć, która będzie doświadczać powtórki, a następnie
całą resztę algorytmu bezpieczeństwa.
Więc będzie to o wiele większa klasa.
Wykonamy około 10 funkcji, ale to tylko dlatego, że robimy to krok po kroku, abyś mógł
lepiej zrozumieć, co się dzieje.
Nie mogę się doczekać, aby wdrożyć nasz model bezpieczeństwa.
I do tego czasu I.