WEBVTT

00:00.270 --> 00:02.590
Hallo und willkommen zu diesem Python-Tutorial.

00:02.820 --> 00:08.730
In Ordnung, also werden wir heute die Update-Funktion erstellen, die alles aktualisiert, sobald

00:08.850 --> 00:12.240
das Auge einen neuen Zustand erreicht hat.

00:12.510 --> 00:16.140
Wenn also eine neue Stufe erreicht wird, müssen Sie die Aktion aktualisieren.

00:16.200 --> 00:19.320
Das letzte ist eigentlich die neue Aktion, die gerade gespielt wurde.

00:19.530 --> 00:22.630
Aber auch das letzte Datum, das zum neuen Staat wird.

00:22.680 --> 00:27.450
Und schließlich das letzte Wort, das zu dem neuen Wort wird, das wir bekommen, wenn wir die Aktion spielen.

00:27.480 --> 00:31.480
Das ist also der logische Pfad, der direkt nach der Auswahl einer Aktion geschieht.

00:31.530 --> 00:35.100
Wir müssen alle Elemente der Übergänge aktualisieren.

00:35.310 --> 00:37.370
Und natürlich bekommen Sie einen neuen Übergang.

00:37.420 --> 00:40.300
Also müssen wir diesen neuen Übergang an die Erinnerung anhängen.

00:40.350 --> 00:46.200
Und schließlich werden wir auch ein Fenster aktualisieren oder belohnen, das Sie kennen, um ein Auge auf

00:46.200 --> 00:49.460
die Entwicklung des Trainings und der Exploration zu haben.

00:49.680 --> 00:55.380
Das Wichtigste für Sie ist jedoch, dass Sie nun endlich eine Verbindung zwischen der KI herstellen

00:55.530 --> 01:01.650
können, die wir jetzt auf unserer Karte implementieren. Wenn wir zu unserer Karte zurückkehren, denken Sie daran,

01:01.650 --> 01:08.580
dass diese Beiji-Aktualisierungsfunktion in der Spielklasse enthalten ist Dort haben wir eigentlich das Spiel mit dem Auto gemacht und festgelegt,

01:08.580 --> 01:12.940
wie das Auto bestraft werden sollte, wenn es einen Fehler macht.

01:13.170 --> 01:19.140
Aber in dieser Spieleklasse haben wir diese Aktualisierungsfunktion bemerkt, und in dieser Aktualisierungsfunktion haben

01:19.500 --> 01:24.700
wir diese Zeilenaktion bemerkt, weil das Gehirn-Update zuletzt weniger Signal ausgegeben hat.

01:24.900 --> 01:28.410
Und genau das machen wir gerade.

01:28.410 --> 01:36.300
Wir sind dabei, diese Update-Funktion zu erstellen, die das letzte Wort und das letzte Signal benötigt, um die

01:36.300 --> 01:37.860
nächste Aktion abzuspielen.

01:37.860 --> 01:41.640
Es werden also nicht nur alle verschiedenen Elemente des Übergangs aktualisiert.

01:41.910 --> 01:48.390
Meistens werden wir jedoch die Aktion spielen, die wir spielen sollten, wenn wir

01:48.390 --> 01:55.920
das letzte Wort und das letzte Signal erhalten. Daher werden wir in dieser Aktualisierungsfunktion natürlich

01:55.920 --> 02:02.400
die soeben implementierte Auswahlaktionsfunktion verwenden, bevor wir die Auswahlaktionsfunktion in die Zukünftige Update-Funktion,

02:02.400 --> 02:07.740
die neben der Aktualisierung aller Updates ausgeführt werden soll.

02:07.860 --> 02:11.200
Das ist also wirklich wichtig, um diese Verbindung jetzt mit der Karte herzustellen.

02:11.310 --> 02:18.480
Was wir machen werden, ist letztendlich die Verbindung zwischen unserem Auge und dem Spiel, das wir in

02:18.480 --> 02:19.750
dieser Klasse machen.

02:19.770 --> 02:24.030
Was wir jetzt tun können, ist, dieses Update direkt anzunehmen.

02:24.060 --> 02:29.970
Zuletzt waren wir weniger Signal, weil dies die Funktion ist, die wir hier mit diesen beiden Argumenten ausführen

02:29.970 --> 02:30.430
werden.

02:30.720 --> 02:38.530
Und genauso wie ein schnelles Erinnerungsgehirn ist unser KI-Objekt das Objekt der Dejuan-Klasse.

02:38.540 --> 02:45.690
Also, was wir jetzt tun werden, ist, dass wir dieses Update mit weniger Worten weniger Signal kopieren und dies wird

02:45.690 --> 02:48.390
unsere nächste Funktion sein, die wir machen.

02:48.480 --> 02:54.120
Und deshalb und das hier einfügen, nur um vorsichtig zu sein, möchte ich nur einige andere Namen nennen als

02:54.120 --> 02:56.190
die Namen, die wir hier haben.

02:56.200 --> 03:00.820
Sie wissen, wir haben das letzte Wort hier und ich möchte dieses letzte Wort nicht mit diesem verwechseln.

03:00.900 --> 03:02.060
Das kann gefährlich sein.

03:02.220 --> 03:06.100
Also werde ich das letzte Wort hier durch ein Wort ersetzen.

03:06.390 --> 03:13.880
Übrigens gilt das Gleiche für weniger Signal. Setzen Sie einfach ein Signal oder sogar ein neues Signal, um anzugeben, dass Sie wissen, dass wir

03:13.920 --> 03:18.900
das messen möchten, wenn Sie einen neuen Zustand erreichen und daher ein neues Signal erhalten.

03:18.900 --> 03:26.100
Aber dann wird dieses Wort natürlich die letzte Belohnung sein, die wir hier bekommen.

03:26.280 --> 03:32.400
Sie wissen, wenn Sie auf Sand gehen oder, wenn Sie zu nahe an einen Rand der Karte kommen, wir

03:32.670 --> 03:34.130
das letzte Wort definieren.

03:34.200 --> 03:39.400
Dieses letzte Wort wird die Eingabe der Aktualisierungsfunktion sein, deshalb haben wir hier das letzte Wort.

03:39.600 --> 03:43.660
Aber hier gebe ich nur einen anderen Namen für das Argument.

03:43.710 --> 03:47.640
Wir wollen es hier nicht mit dem letzten Wort verwechseln.

03:47.640 --> 03:50.160
Also gut, das ist die Update-Funktion.

03:50.310 --> 03:54.090
Und jetzt lass uns hineingehen und diese beiden Dinge tun.

03:54.090 --> 03:58.970
Das sind die Daten, die alle Elemente unseres Übergangs und natürlich die Aktion auswählen.

03:59.290 --> 04:01.670
OK also, was müssen wir zuerst aktualisieren.

04:01.950 --> 04:06.760
Nun, wie Sie verstanden haben, möchten wir ein Datum festlegen, wenn Sie einen Staat erreichen.

04:06.840 --> 04:12.800
Das erste, was wir aktualisieren werden, ist offensichtlich die Nachricht, dass dies die Nachricht ist, die wir erreichen.

04:12.840 --> 04:17.340
Also werde ich diesen neuen Staat als neuen Staat bezeichnen und dann wird er es.

04:17.340 --> 04:19.810
Und wie können wir diesen neuen Zustand erreichen?

04:20.040 --> 04:25.460
Das hängt natürlich vom Signal des neuen Signals ab, das die Sensoren gerade erkannt haben.

04:25.830 --> 04:32.760
Und als Erinnerung daran, der Zustand ist das Signal selbst, das aus den drei Signalen besteht, dass die Sensoren

04:32.760 --> 04:37.470
ein Signal signalisieren, um drei plus plus und minus Orientierung zu signalisieren.

04:37.530 --> 04:38.600
Das ist unser Staat.

04:38.610 --> 04:42.470
Stellen Sie sicher, dass das Signal der Zustand ist.

04:42.660 --> 04:46.160
Im Moment ist es eine einfache Liste von fünf Elementen.

04:46.200 --> 04:51.540
Und da dies der Input für all diese Arbeit sein wird, denken Sie daran, dass wir es in einen Brennersensor

04:51.540 --> 04:52.200
umwandeln müssen.

04:52.490 --> 04:54.960
Genau das werden wir also jetzt tun.

04:54.960 --> 05:03.910
Wir werden unsere Taschenlampenbibliothek nehmen und dann die Tensor-Klasse nehmen, die unser

05:04.450 --> 05:12.420
neues Signal in eine dichtere Fackel verwandelt Nehmen Sie eine

05:12.420 --> 05:19.650
Typumwandlung vor, um sie wie folgt in Floats umzuwandeln.

05:19.900 --> 05:24.500
Und dann versuchen Sie endlich, zu überlegen, was wir als nächstes tun müssen.

05:24.530 --> 05:29.590
Es ist natürlich so, dass diese Fake-Down-Engine erstellt wird, um Diamanten hinzuzufügen und

05:29.590 --> 05:37.080
der Charge zu entsprechen. Dies tun wir natürlich mit der Squeeze-Funktion, auf die wir den Index dieses großen Diamanten setzen müssen.

05:37.100 --> 05:40.210
Und wir wollen für die Charge, die Null ist.

05:40.770 --> 05:41.320
Gut.

05:41.320 --> 05:47.110
Und jetzt haben wir unsere neuen Zustände, bestehend aus den drei Signalen der drei Sensoren

05:47.110 --> 05:54.290
plus Orientierung minus Orientierung und natürlich davon, was von dem neuen Signal abhängt, das wir mit dieser Aktualisierungsfunktion erhalten.

05:54.400 --> 05:57.940
Genau zu diesem Zeitpunkt erhalten wir die drei Signale.

05:57.940 --> 06:04.450
Zusätzlich dazu oder zusätzlich und als Erinnerung werden die drei Signale der Sensordichte um die

06:04.720 --> 06:06.490
Sensoren herum erfasst.

06:06.490 --> 06:06.940
Gut.

06:06.970 --> 06:13.710
Wir haben also gerade eine neue Etappe erreicht, das heißt, wir haben die neue Etappe erreicht und müssen nun das nächste Update vornehmen.

06:13.750 --> 06:16.440
Also, was müssen wir jetzt aktualisieren?

06:16.660 --> 06:22.320
Was wäre die logische Sache, wenn man diesen neuen Zustand erreicht hat?

06:22.630 --> 06:25.940
Nun, was wir jetzt brauchen, ist die Erinnerung.

06:25.960 --> 06:27.010
Warum das.

06:27.010 --> 06:34.200
Dies liegt daran, dass zu jedem Zeitpunkt t ein Übergang aus dem aktuellen Status Estey am nächsten Tag als Tipis

06:34.220 --> 06:37.660
besteht, wenn der Belohnung arti und die Aktion 80.

06:37.860 --> 06:44.020
Und jetzt haben wir bereits S-T, wir haben bereits unser Team und wir haben bereits 80, und wir haben gerade

06:44.020 --> 06:47.540
das letzte Element der Umstellung von Estep plus eins erhalten.

06:47.590 --> 06:55.720
Indem wir diesen neuen Zustand so tief wie eins bekommen, bekommen wir einen brandneuen Übergang des Gedächtnisses und daher müssen

06:55.720 --> 07:01.910
wir diesen brandneuen Übergang zum Speicher hinzufügen, da dies einfach unser nächster Übergang ist.

07:01.930 --> 07:03.980
Deshalb haben wir diese Erinnerung jetzt.

07:04.120 --> 07:10.990
Deshalb nehme ich mein aus der Replay-Speicherklasse erstelltes Erinnerungsobjekt, und deshalb nehme

07:10.990 --> 07:17.130
ich das Selbstgedächtnis, um mich auf das Objekt zu beziehen.

07:17.160 --> 07:22.700
Aber da ich das Selbst verwende, muss ich das Selbst in diese Funktion einbeziehen.

07:22.950 --> 07:25.440
Jetzt kannst du wirklich sehen, wozu dieses Selbst dient.

07:25.550 --> 07:32.600
Wann immer Sie eine Variable verwenden, die Sie in der init-Funktion erstellt und initialisiert haben, wird dieser Speicher verwendet.

07:32.600 --> 07:33.960
Und jetzt haben wir es geschafft.

07:34.190 --> 07:36.950
Und wie Sie das aktualisieren werden.

07:37.160 --> 07:41.290
Nun, die gute Nachricht ist, dass wir bereits eine Funktion dafür erstellt haben.

07:41.300 --> 07:46.990
Es ist die Push-Funktion, die ein Ereignis oder einen Übergang zum Speicher verbietet.

07:47.190 --> 07:49.060
Genau das verwenden wir jetzt.

07:49.070 --> 07:55.460
Wir werden die Push-Funktion verwenden, um unseren neuen Übergang, den wir gerade gemacht haben, in den Speicher zu

07:55.760 --> 08:01.820
schreiben, und deshalb bin ich hier nicht gleichwertig, da wir die Methode verwenden werden und daher diesen

08:02.320 --> 08:04.200
Push direkt verwenden können.

08:04.280 --> 08:10.010
Und zuerst füge ich den Übergang hinzu, den wir gerade bekommen haben, und das ist das

08:10.010 --> 08:10.780
erste Datum.

08:10.850 --> 08:14.010
So selbst das letzte Datum.

08:14.270 --> 08:18.680
Das ist also S-T. Genau das gibt es schon.

08:18.680 --> 08:23.620
Dann ist das nächste Element dieses Übergangs natürlich der neue Zustand, den wir gerade erreicht haben.

08:23.840 --> 08:29.720
Da das Objekt, das wir in dieser init-Funktion erstellt und initialisiert haben, nicht durchführbar ist, setzen wir

08:30.080 --> 08:31.470
uns nicht hier.

08:31.580 --> 08:39.940
Wir setzen direkt den Newstead, dann ist das nächste Element des Übergangs die Aktion und sagen, dass wir bereits den letzten Abschnitt haben,

08:39.940 --> 08:43.690
der dieses Selbst ist und die letzte Aktion hier ist.

08:43.840 --> 08:45.320
Also ist es natürlich gleich Null.

08:45.350 --> 08:50.050
Dann wird es natürlich mit der Aktion select select aktualisiert.

08:50.170 --> 08:51.190
Aber das ist das hier.

08:51.190 --> 08:55.620
Also ist es die letzte Aktion.

08:55.840 --> 08:57.120
Aber jetzt sei vorsichtig.

08:57.190 --> 09:01.540
Die Elemente, die in diesen Übergang einbezogen wurden, sollten alle brennenden Antworten sein.

09:01.870 --> 09:03.860
Wie Sie sehen, ist dies beim letzten Datum der Fall.

09:03.880 --> 09:05.200
Es ist ein Brennersensor.

09:05.350 --> 09:07.860
Der neue Zustand ist auch eine brennende Antwort.

09:07.900 --> 09:12.050
Und so muss dies natürlich auch für die Aktion und dann für die Belohnung gelten.

09:12.190 --> 09:17.320
Aber jetzt werden Sie darüber nachdenken, wie kann es eine brennende Antwort sein, wenn man bedenkt, dass es sich einfach um eine Zahl handelt.

09:17.410 --> 09:20.700
Sie wissen, dass die Aktion entweder 0 1 oder 2 ist.

09:20.890 --> 09:22.370
Aber das ist eigentlich kein Problem.

09:22.390 --> 09:28.640
Wir können diese 0 1 oder 2-Variable immer noch in einen Brennersensor umwandeln.

09:28.660 --> 09:31.530
Dies wird nur ein langer Tensor sein.

09:31.540 --> 09:36.910
Der Long-Wert ist ein Typ und der Tensor enthält eine Ganzzahl, da die letzte Aktion eine

09:36.910 --> 09:39.660
Ganzzahl ist, also 0 1 oder 2.

09:39.670 --> 09:47.650
Was wir jetzt machen werden, ist unser Bibliotheksbrenner. Dann werden wir die lange Tensor-Klasse nehmen, die

09:48.190 --> 09:53.470
ein Objekt schaffen wird, das die Nicht-Besitznahme selbst sein wird.

09:53.710 --> 10:00.370
Wenn Sie diese selbstletzte Aktionsfunktion als Eingabe verwenden, wird dieses lange Tensorobjekt erstellt, aber es enthält immer noch

10:00.370 --> 10:08.590
0 1 oder 2 in einem langen Tensorobjekt. Dies soll nur mit dem Übergang übereinstimmen, dass es nur Tensoren enthält, weil wir

10:08.830 --> 10:14.070
sind wir arbeiten mit PI Fackel und wir arbeiten mit einem neuronalen Netzwerk.

10:14.170 --> 10:18.480
Wir müssen also mit Sensoren arbeiten, damit wir lange antworten können, um zu antworten.

10:18.580 --> 10:20.780
Und noch eine letzte Umstellung.

10:20.860 --> 10:27.520
Wir müssen sicher sein, dass das, was in dieser langen Antwort enthalten ist, eine ganze Zahl ist. Um dies

10:27.520 --> 10:34.000
sicherzustellen, auch wenn wir bereits wissen, dass die letzte Aktion 0 1 oder 2 ist, um sicherzustellen, dass

10:34.000 --> 10:39.310
wir diese Int-Typ-Konvertierung erneut durchführen, konvertieren wir unsere Selbstletzte Aktion in eine Ganzzahl.

10:39.310 --> 10:46.450
Da gehen wir und dann müssen wir einfach diese ganzzahlige, selbstlose Aktion in Klammern setzen, so dass wir jetzt einen

10:46.450 --> 10:52.810
langen Tensor eines Elements erhalten, das diese letzte Aktion 0 oder 1 oder 2 selbst sein wird.

10:52.810 --> 10:59.880
Der entscheidende Punkt ist also, wie Sie eine einfache Zahl von Null oder eins in einen Tensor mit Brenner konvertieren.

11:00.060 --> 11:00.360
Gut.

11:00.360 --> 11:06.820
Und dann endlich das letzte Element des Übergangs und das ist natürlich das letzte Wort, das wir bekommen haben.

11:06.880 --> 11:12.980
Das ist genau das letzte Wort Volleyball, das wir in einer Funktion erstellt haben, die auf Null initialisiert wurde.

11:13.110 --> 11:19.720
Aber dann wird es natürlich hier in diesem Code aktualisiert, entweder wenn wir zu einem Sinn kommen, der ein negatives Wort ist,

11:19.770 --> 11:24.020
oder wenn wir uns weiter vom Ziel entfernen, ist das wiederum eine negative Belohnung.

11:24.180 --> 11:30.090
Wenn wir uns dem Ziel nähern, ist das eine positive Belohnung und die schlechteste Bestrafung, wenn wir zu nahe an einen

11:30.090 --> 11:34.080
Rand der Karte kommen. Nun, das ist ein schreckliches negatives Wort minus eins.

11:34.290 --> 11:36.190
Und das ist eine.

11:36.260 --> 11:40.810
Fügen wir dieses letzte Element des Übergangs hinzu, um das Wort selbst zu dirigieren.

11:41.060 --> 11:47.660
Ich kopiere also diese Einfügung hier und jetzt müssen wir eine weitere Konvertierung vornehmen, die natürlich

11:47.750 --> 11:53.570
genau dieselbe wie diese ist, da das Wort keine Ganzzahl, sondern eine Float-Zahl ist.

11:53.780 --> 12:00.350
Wir werden einfach eine Taschenlampe mit dieser Tensorumwandlung herstellen, aber ohne dass die Klammern hier bleiben, weil Sie wissen, dass wir zuerst

12:00.350 --> 12:06.200
die Nummer in eine Liste schreiben müssen, und dann wird diese Liste die Taschenlampe in den Unterricht aufnehmen, aber

12:06.200 --> 12:11.510
wir haben keine Um das in der Konvertierung zu machen, weil das letzte Wort eine Float-Nummer ist.

12:11.510 --> 12:21.400
Also, was wir tun werden, ist hier einfach hinzuzufügen: Fackel Punkt Tensor Fackel einen Tensor dann Klammern in Klammern.

12:21.680 --> 12:27.470
Wir schließen hier die Klammern und schließen die Klammern.

12:27.470 --> 12:28.820
Da gehen wir.

12:28.820 --> 12:35.180
Um zusammenzufassen, haben Sie gesagt, dass wir gerade erreicht haben, und das Wort wir beobachten, dass wir ein neues Ereignis des Übergangs beobachten,

12:35.540 --> 12:37.150
das wir der Erinnerung hinzufügen.

12:37.550 --> 12:44.240
Und dieser Übergang enthält das letzte Datum und den neuen Zustand als Tipis, wenn die letzte Aktion 80

12:44.540 --> 12:47.640
und das letzte Wort Archie gespielt wird.

12:48.020 --> 12:48.390
Gut.

12:48.440 --> 12:51.220
Und jetzt gehen wir mit unserer Erinnerung an Termine.

12:51.410 --> 12:55.710
Also machen wir eine kurze Pause und wir kümmern uns um das nächste Update im nächsten Tutorial.

12:55.970 --> 12:57.440
Bis dahin ich
