WEBVTT

00:00.540 --> 00:05.090
Olá e seja bem vindo a esta história quase o título final deste módulo.

00:05.100 --> 00:10.260
Eu só vou explicar o código principal que executará o todo antes de obter os resultados

00:10.290 --> 00:11.930
emocionantes e assistir os vídeos.

00:12.090 --> 00:15.920
Então, este é o código principal e, como você pode ver, isso é bastante curto.

00:15.930 --> 00:21.120
Começamos importando as bibliotecas e os módulos e também as diferentes classes e funções

00:21.120 --> 00:24.270
que fizemos, como Altikriti, do nosso arquivo modelo.

00:24.390 --> 00:30.210
A função de trem do arquivo de trem e a função de teste do arquivo de teste e,

00:30.270 --> 00:31.930
claro, importamos o nosso otimizador.

00:31.950 --> 00:37.350
Em seguida, começamos com a primeira seção em que entramos em uma classe todos os parâmetros.

00:37.500 --> 00:39.660
E isso é talvez isso.

00:39.720 --> 00:44.040
Lembre-se que este é o objeto BRAMs que criamos a partir desta classe Harams.

00:44.040 --> 00:48.900
Cada vez que conseguimos um parâmetro como a taxa de aprendizado, não estamos sem.

00:49.200 --> 00:50.870
Então vamos passar por eles rapidamente.

00:50.880 --> 00:54.380
Esta primeira ou aqui é as taxas de aprendizado.

00:54.480 --> 00:59.140
Então, como você pode ver, escolhemos um pequeno e você classifica o segundo é o parâmetro.

00:59.160 --> 01:09.810
Mais uma vez, tomamos como 0. um parâmetro OneTel um conjunto de 1 16 processos 20 passos e comprimento máximo de 10000.

01:09.900 --> 01:10.850
39 nós tomamos

01:10.850 --> 01:17.580
E nós falamos sobre isso, este é o parâmetro que estabelecemos para garantir que o agente não fique indefinidamente preso em um

01:17.730 --> 01:20.910
estado de meio ambiente, então isso irá parar o jogo.

01:21.060 --> 01:28.800
Se o comprimento do episódio excede esse comprimento máximo e, eventualmente, obviamente, obtemos o nome do

01:28.800 --> 01:29.690
nosso ambiente.

01:29.790 --> 01:30.890
A ruptura é zero.

01:30.990 --> 01:37.770
E a propósito, você também pode jogar em outros ambientes apenas mudando o nome do ambiente

01:37.770 --> 01:38.410
aqui.

01:38.430 --> 01:44.760
Então, se você quer jogar algumas outras versões ou mesmo alguns outros jogos do Atari, você pode simplesmente

01:45.030 --> 01:48.580
substituir esta quebra de zero aqui por alguns outros jogos.

01:48.750 --> 01:53.730
Mas posso dizer-lhe que o vídeo aparente já é muito desafiador.

01:53.730 --> 01:56.030
Tudo bem, então todos os parâmetros aqui.

01:56.160 --> 01:59.330
E então há o código principal para a corrida principal.

01:59.550 --> 02:02.850
E então, veja o que fazemos nesta primeira linha.

02:02.850 --> 02:05.270
Definimos um segmento por núcleo.

02:05.430 --> 02:11.880
que irá inicializar todos esses parâmetros aqui porque existem variáveis ​​anexadas a este objeto BRAMs.

02:12.150 --> 02:18.810
Então, na segunda linha, obtemos todos os renderizadores, você sabe criar um novo objeto da

02:18.810 --> 02:19.490
classe Paramjit,

02:19.560 --> 02:20.840
Então estabelecemos a semente.

02:20.970 --> 02:28.830
Em seguida, recebemos nosso ambiente usando a árvore Criar e funcionamos com o nome do nosso ambiente, que é uma

02:28.830 --> 02:30.040
ruptura de zero.

02:30.040 --> 02:35.410
Você vê células que nomeiam e, portanto, o parâmetro e o nome são bonitos de zero.

02:35.430 --> 02:37.660
Então, isso nos levará ao ambiente de sair.

02:37.890 --> 02:42.870
usual de criar um ambiente, mas você sabe melhorar o processo inteiro e melhorar o desempenho.

02:42.870 --> 02:45.540
E, a propósito, essa não é a maneira

02:45.690 --> 02:52.470
Bem, usamos isso para realmente criar um ambiente otimizado e isso fazemos isso, o universo universo é um

02:52.630 --> 02:57.730
pacote que vem com todos os pacotes que você instalou no motor aberto.

02:57.870 --> 03:01.490
Bem, graças ao universo, obtemos um ambiente otimizado.

03:01.590 --> 03:03.320
Isto é o que é tudo aqui.

03:04.050 --> 03:09.240
Então, obtemos o nosso modelo compartilhado criando um objeto da classe crítica ativa.

03:09.240 --> 03:14.430
E aqui é importante entender que este modelo compartilhado é o modelo compartilhado pelos

03:14.430 --> 03:15.030
diferentes agentes.

03:15.180 --> 03:17.880
Então, temos diferentes tópicos em um curso diferente.

03:18.210 --> 03:25.410
E, falando de ameaças na próxima linha aqui, um modelo deprimido que compartilha memória, o que fazemos é que armazenamos o modelo

03:25.500 --> 03:31.260
na memória compartilhada do computador para que todos os tópicos possam ter acesso a ele mesmo que

03:31.260 --> 03:32.960
estejam em um curso diferente.

03:33.000 --> 03:34.510
Então é o que fazemos aqui.

03:34.530 --> 03:42.410
Isso é para habilitar isso, então, obtemos o otimizador vinculado aos parâmetros do nosso modelo compartilhado e com uma

03:42.410 --> 03:45.780
taxa de aprendizado de um ponto ou um.

03:45.930 --> 03:51.030
compartilhada para que todos os agentes possam ter acesso a ele para otimizar o modelo.

03:51.030 --> 03:57.720
E, novamente, é importante entender que o otimizador também é compartilhado porque vai atuar no modelo compartilhado e dizendo

03:57.780 --> 04:02.530
que a próxima linha otimizada que compartilha memória armazenamos o otimizador em memória

04:02.910 --> 04:10.260
Em seguida, inicializamos nossos processos para que o processo de teste não atualize o modelo compartilhado, mas ele simplesmente o usa

04:10.260 --> 04:14.710
para experimentá-lo em uma parte e imprimir a pontuação e gravar os vídeos.

04:14.820 --> 04:17.920
Então, é exatamente o que é feito aqui com Target igual a teste.

04:17.940 --> 04:24.330
Esse é o processo de teste e este processo aqui é cortado da tortura que o pré-processamento multi.

04:24.450 --> 04:31.600
Então, aqui e o que ele faz é que basicamente executa uma função em um segmento independente.

04:31.860 --> 04:38.050
Então, quando recomeçamos, começamos um novo processo que foi o primeiro ano inicial neste momento.

04:38.370 --> 04:45.030
E então, com este processo para adicionar P, adicionamos o processo na lista dos processos.

04:45.270 --> 04:52.170
E, finalmente, neste loop, nós apenas fazemos um loop para executar todos os outros processos que serão treinados

04:52.380 --> 04:54.320
ao atualizar o modelo compartilhado.

04:54.780 --> 04:58.030
E isso é basicamente o que acontece nas últimas linhas de código aqui.

04:58.380 --> 05:03.870
Então, se você não quiser entrar nos detalhes, o importante para entender é que isso irá

05:03.870 --> 05:09.420
executar os processos de forma ótima e, portanto, todos devemos ser bons para executar este código

05:09.420 --> 05:12.670
e ter um modelo treinado e, eventualmente, assistir os resultados.

05:12.840 --> 05:14.150
Então eu não posso esperar para fazer isso.

05:14.160 --> 05:16.110
Isso vai ser bastante emocionante.

05:16.110 --> 05:19.240
Vou tentar encontrar pessoas agora para que todos possamos assistir juntos.

05:19.350 --> 05:21.440
E assim até a próxima vez eu.
