WEBVTT

00:00.540 --> 00:05.090
Ciao e benvenuto a questa storia quasi il titolo finale di questo modulo.

00:05.100 --> 00:10.260
Sto solo andando a spiegare il codice principale che eseguirà il tutto prima di ottenere risultati

00:10.290 --> 00:11.930
entusiasmanti e guardare i video.

00:12.090 --> 00:15.920
Quindi questo è il codice principale e come puoi vedere è piuttosto breve.

00:15.930 --> 00:21.120
Iniziamo importando le librerie e i moduli e anche le diverse classi e funzioni che

00:21.120 --> 00:24.270
abbiamo creato come Altikriti dal nostro file di modello.

00:24.390 --> 00:30.210
La funzione treno dal file del treno e la funzione di test dal file di test e,

00:30.270 --> 00:31.930
naturalmente, importiamo il nostro ottimizzatore.

00:31.950 --> 00:37.350
Quindi iniziamo con la prima sezione in cui entriamo in una classe tutti i parametri.

00:37.500 --> 00:39.660
E questo è forse questo.

00:39.720 --> 00:44.040
Ricorda che questo è l'oggetto BRAM che abbiamo creato da questa classe di harams.

00:44.040 --> 00:48.900
Ogni volta che otteniamo un parametro come il tasso di apprendimento di cui non siamo fuori.

00:49.200 --> 00:50.870
Quindi analizziamoli rapidamente.

00:50.880 --> 00:54.380
Questo primo o qui è i tassi di apprendimento.

00:54.480 --> 00:59.140
Quindi come puoi vedere scegliamo un piccolo e tu consideri che il secondo è il parametro.

00:59.160 --> 01:09.810
Ancora una volta lo prendiamo come 0. parametro OneTel un insieme di 1 16 processi 20 passi e lunghezza massima di 10000.

01:09.900 --> 01:10.850
39 prendiamo un

01:10.850 --> 01:17.580
E abbiamo detto che questo è il parametro che impostiamo per assicurarci che l'agente non rimanga bloccato indefinitamente

01:17.730 --> 01:20.910
in uno stato dell'ambiente, quindi questo fermerà il gioco.

01:21.060 --> 01:28.800
Se la lunghezza dell'episodio supera questa lunghezza massima e, ovviamente, otteniamo il nome del

01:28.800 --> 01:29.690
nostro ambiente.

01:29.790 --> 01:30.890
La rottura è zero.

01:30.990 --> 01:37.770
E dal modo in cui puoi giocare anche su altri ambienti semplicemente cambiando il nome dell'ambiente

01:37.770 --> 01:38.410
qui.

01:38.430 --> 01:44.760
Quindi se vuoi giocare ad altre versioni di breakout o anche ad altri giochi di Atari, puoi

01:45.030 --> 01:48.580
semplicemente sostituire questa rottura di zero qui con altri giochi.

01:48.750 --> 01:53.730
Ma posso dirti che il video di breakout è già molto impegnativo.

01:53.730 --> 01:56.030
Va bene così tutti i parametri qui.

01:56.160 --> 01:59.330
E poi c'è il codice principale per la corsa principale.

01:59.550 --> 02:02.850
E così qui vediamo cosa facciamo in questa prima riga.

02:02.850 --> 02:05.270
Impostiamo un thread per core.

02:05.430 --> 02:11.880
otterrà l'inizializzazione di tutti questi parametri qui perché ci sono variabili associate a questo oggetto BRAMs.

02:12.150 --> 02:18.810
Quindi nella seconda riga otterremo tutti i renderer sapendo di creare un nuovo oggetto della classe

02:18.810 --> 02:19.490
Paramjit che

02:19.560 --> 02:20.840
Quindi impostiamo il seme.

02:20.970 --> 02:28.830
Quindi otteniamo il nostro ambiente utilizzando l'albero Create e funzioniamo con il nome del nostro ambiente che si

02:28.830 --> 02:30.040
trova a zero.

02:30.040 --> 02:35.410
Vedete le celle che nominano e quindi parametro e nome sono piuttosto zero.

02:35.430 --> 02:37.660
In modo che ci ottenga l'ambiente di scoppiare.

02:37.890 --> 02:42.870
il solito modo di creare un ambiente, ma sai migliorare l'intero processo e migliorare le prestazioni.

02:42.870 --> 02:45.540
E dal modo in cui questo non è

02:45.690 --> 02:52.470
Bene, lo usiamo per creare effettivamente un ambiente ottimizzato e questo facciamo ciò che l'universo dell'universo è

02:52.630 --> 02:57.730
un pacchetto che viene fornito con tutti i pacchetti installati su open engine.

02:57.870 --> 03:01.490
Bene grazie all'universo otteniamo un ambiente ottimizzato.

03:01.590 --> 03:03.320
Questo è tutto qui.

03:04.050 --> 03:09.240
Quindi otteniamo il nostro modello condiviso creando un oggetto della classe critica attiva.

03:09.240 --> 03:14.430
E quindi qui è importante capire che questo modello condiviso è il modello condiviso dai

03:14.430 --> 03:15.030
diversi agenti.

03:15.180 --> 03:17.880
Quindi abbiamo diversi thread in corso diverso.

03:18.210 --> 03:25.410
E parlando di minacce nella riga successiva, qui il modello arruffato che condivide la memoria, quello che facciamo è archiviare il

03:25.500 --> 03:31.260
modello nella memoria condivisa del computer in modo che tutti i thread possano accedervi anche se si

03:31.260 --> 03:32.960
trovano in un percorso diverso.

03:33.000 --> 03:34.510
Quindi questo è quello che facciamo qui.

03:34.530 --> 03:42.410
Questo per abilitare questo, quindi il nostro ottimizzatore viene collegato ai parametri del nostro modello condiviso e con un

03:42.410 --> 03:45.780
tasso di apprendimento di un punto o uno.

03:45.930 --> 03:51.030
memoria condivisa in modo che tutti gli agenti possano accedervi per ottimizzare il modello.

03:51.030 --> 03:57.720
E ancora una volta è importante capire che l'ottimizzatore è anche condiviso perché agirà sul modello condiviso e

03:57.780 --> 04:02.530
dicendo che la riga successiva ottimizza la memoria condivisa che memorizziamo l'ottimizzatore nella

04:02.910 --> 04:10.260
Quindi inizializziamo i nostri processi in modo che il processo di test non aggiorni il modello condiviso ma lo utilizza solo

04:10.260 --> 04:14.710
per provarlo in una parte e stampare il punteggio e registrare i video.

04:14.820 --> 04:17.920
Questo è esattamente ciò che viene fatto qui con il test Target equals.

04:17.940 --> 04:24.330
Questo è il processo di test e questo processo qui è tagliato dalla tortura che multi pre-elaborazione.

04:24.450 --> 04:31.600
Quindi qui e quello che fa è che fondamentalmente esegue una funzione su un thread indipendente.

04:31.860 --> 04:38.050
Quindi, quando riavviamo, iniziamo un nuovo processo che è stato l'anno scorso l'anno scorso.

04:38.370 --> 04:45.030
E poi con questo processo per aggiungere P aggiungiamo il processo nella lista dei processi.

04:45.270 --> 04:52.170
Infine, in questo ciclo, eseguiamo semplicemente un ciclo per eseguire tutti gli altri processi che verranno

04:52.380 --> 04:54.320
addestrati aggiornando il modello condiviso.

04:54.780 --> 04:58.030
E questo è fondamentalmente ciò che accade nelle ultime righe di codice qui.

04:58.380 --> 05:03.870
Quindi, se non vuoi entrare nei dettagli, la cosa importante da capire è che questo eseguirà

05:03.870 --> 05:09.420
i processi in modo ottimale e quindi dovremmo essere tutti bravi a eseguire questo codice e

05:09.420 --> 05:12.670
ad avere un modello addestrato e infine guardare i risultati.

05:12.840 --> 05:14.150
Quindi non vedo l'ora di farlo.

05:14.160 --> 05:16.110
Sarà molto eccitante.

05:16.110 --> 05:19.240
Cercherò di trovare le persone ora in modo che possiamo vederle tutte insieme.

05:19.350 --> 05:21.440
E così fino alla prossima volta
