Olá e bem vindo a este tutorial.
Tudo bem.
Então, nos tutoriais anteriores, fizemos o cérebro ou, se você quer o cérebro da A-3, veja agora,
precisamos treinar esse cérebro.
Mas, para treinar seus cérebros, precisamos de um otimizador que use essa ferramenta e coloque um cigarro no
centro para tomar o peso de acordo com o quanto eles contribuem para o erro entre as previsões
e os alvos.
que fizemos até agora no primeiro e segundo módulo usamos o otimizador de átomos por Torche no treinamento.
E o
Mas, como disse-lhe, estamos a lidar com um problema muito desafiador que está a surgir e o algoritmo A-380 por
si só não é suficiente para resolver este problema.
Precisamos de alguns otimizadores personalizados e muitos truques diferentes para resolver esse problema sem aguardar
as idades.
Então, esse é o propósito de fazer isso e é por isso que temos um otimizador personalizado separado com base no
otimizador de átomos.
E isso está contido nesta classe do inimigo compartilhado e por que o átomo compartilhado.
É porque é realmente o otimizador de átomos, mas isso funcionará em estados compartilhados.
Então, vamos explicar como isso funciona e é para nós. Então, nós vamos passar pelas
diferentes funções aqui sem matá-los porque você sabe que queremos manter energia para o próximo e, além
disso, é o trem que eu caiu, que levará mais de cem linhas de código.
Então esteja pronto para isso.
E, portanto, vamos tentar explicar o que está acontecendo aqui em um Statoil Statoil.
E vamos começar agora.
compartilhamento de classe que conterá três funções, a função init, a função de memória compartilhada e a função de etapa.
Tudo bem, então primeiro, apresentamos esse átomo de
Então, o que fazemos primeiro é que herdamos do optin esse átomo que é, naturalmente, o otimizador de átomos
e que obtemos do módulo Upton da biblioteca da tocha.
Então, aqui, somos uma herança simples para obter as ferramentas relacionadas ao otimizador de átomos e então começamos
com a função init.
Então, o que acontece aqui.
Primeiro, usamos a superfunção para herdar de todas as ferramentas e todos os parâmetros básicos do átomo da
classe Atom e esses parâmetros básicos estão aqui.
Harams aprendendo amortecedores de raça Epsilon e decaimento em peso.
E então começamos um acompanhamento.
Este primeiro Foluke para o próprio grupo que Paramo agrupa.
Então, para nós, o que são grupos de parum configurados em torno de grupos contém todos os atributos do otimizador.
E, entre esses atributos, temos os parâmetros que temos para otimizar esses parâmetros
que queremos atomizar outras formas da rede que estão contidas em grupos de autopartes talvez.
Então, nós vamos grupo pertence a grupos de auto-ajuda.
que queremos otimizar e que estão exatamente contidos nos grupos de duendes de duvida, talvez.
E aqui temos o segundo Faltu que obterá esses parâmetros
Então, basicamente, passamos por grupos de auto-ajuda que contém todos os parâmetros e para cada grupo
de parâmetros e auto-conversação de grupos, vamos passar pelos parâmetros que queremos otimizar.
Portanto, para o grupo Paramo aqui significa para cada Tancer de pesos que queremos otimizar.
Então, para cada sensor de pesos que queremos otimizar e, então, o que acontece dentro desse grupo com estas
quatro linhas de código.
Basicamente, o que acontece é que a atualização feita pelo otimizador é baseada em uma média móvel
exponencial do gradiente.
Essa é a linha de código aqui.
Essa é a média móvel exponencial do gradiente do momento um que é de ordem um.
Mas os objetos criados por átomos não são apenas baseados em que ele também é baseado em uma média
móvel exponencial do quadrado do gradiente.
Essa é uma média móvel exponencial do gradiente de impulso para ou dois.
Então, aqui está a média móvel exponencial de todos.
E aqui está a média móvel exponencial de dois para cada um deles que EMJ se degradou.
Então, o que acontece aqui.
E agora, se você quiser obter mais em profundidade de como a média móvel exponencial
funciona bem, eu incentivo você a dar uma olhada neste método Adam para otimização estocástica porque, basicamente,
o otimizador de átomos que estamos implementando agora é baseado em O algoritmo é um aqui.
Então, se você quiser ter mais detalhes sobre como o algoritmo funciona bem, este documento será definitivamente útil.
E então você tem algumas explicações adicionais sobre o algoritmo com os átomos e as regras.
E então você sabe que é só se você quer atacar isso antes de atacar a grande função
do trem que fará depois.
OK, então vamos voltar para bisonte.
E agora vamos passar para a segunda memória compartilhada.
Então, agora vou dizer algumas palavras.
A idéia dessa função de memória compartilhada é como um tensor que kuda você conhece é um acelerador
baseado em uma visão.
E, basicamente, o que acontece aqui é que temos esses tensores dos estados que compartilham memória aqui
aqui e aqui que se comportam um pouco como tenso que poderia acelerar a computação acelerada.
Mas a diferença é que aqui os sensores que compartilham memória enviam a computação para uma parte
do GP que você ou você está acessível para toda a ameaça paralisada.
Então, é basicamente o que é feito aqui.
Isso é um pouco como 10 para esse kuda, mas é enviado apenas a uma parte do GP para
estar acessível às ameaças paralelizadas.
Tudo bem.
E então temos o último passo de função.
Então, você conhece essa função, é como o método passo do otimizador de átomos que utilizamos neste curso.
E, novamente, isso é baseado no algoritmo um do mesmo papel que vimos antes.
Então, esse algoritmo.
Então, novamente você quer entender em detalhes as seguintes linhas de código.
Bem, novamente, Ingrid é você para dar uma olhada neste algoritmo um por este artigo.
E, além do que é feito aqui, não é totalmente obrigatório, porque esta é realmente uma pasta de cópia do
método de passo que atua na classe de átomos.
feito aqui, poderíamos ter feito isso usando nossa herança, porque aqui herdamos de Acton que Adão e,
portanto, usamos nossa herança. Bem, o que podemos fazer em vez de fazer tudo isso só
vai escrever aqui. O comentário é apenas usar o superfunction que aplicamos a nossa classe de Adão compartilhada, então nosso objeto
próprio e aqui, apenas adicionamos etapa com parêntese, é o método do ato naquela classe e é exatamente o mesmo.
Então, basicamente, o que é
É por isso que eu só estava dizendo que aqui é apenas uma cópia do método passo do
ato na classe Atom.
Então eu acho que se você substituir tudo isso por esta super função aplicada para compartilhar Adam e o método passo
bem, podemos obter exatamente a mesma coisa.
Tudo bem, então foi interessante ter uma rápida olhada nisso.
Basicamente você pode ver isso como o otimizador de Adam.
É como se tivéssemos uma visão mais profunda disso.
Mas, novamente, se você quiser entrar em mais detalhes de tudo isso e se você quer entender o que
acontece atrás da cena. Bem, eu encorajo você a examinar este trabalho de pesquisa.
Vou colocar o link nos comentários aqui.
Você sabe que você terá todo o código conectado em excelentes detalhes.
Então é realmente bom se você puder dar uma olhada nisso.
E agora espero que você tenha uma grande energia porque iremos para o arquivo do trem que conterá esta enorme
função de comboio e que basicamente treinará nossos cérebros, o que agora podemos fazer
porque temos nosso otimizador.
Então tenha uma boa pausa agora.
Tenha um bom sono e sempre que você se sentir em excelente forma.
Vamos passar para o próximo passo.
Até então, desfrute da AI.