Olá e bem-vindo à história.
Tudo bem, então, depois que fizemos essas quatro convoluções e o LCN, agora temos um estado codificado que será
a entrada dessas duas redes neurais que faremos para o ator e o crítico.
E, falando sobre eles, o único que temos que fazer agora é apenas criar ferramentas em nossas conexões completas.
Uma para o ator e outra para o crítico.
Mas antes de fazer isso precisamos obter o número de ações possíveis.
E então vou chamar você de variável aqui que não vai ser uma variável do objeto.
mas vou criar resultados não viáveis ​​que representarão uma série de ações possíveis e para obtê-lo.
Então não vou usar o eu aqui,
Bem, podemos obtê-lo a partir do espaço de ação.
Então, nós levamos nosso espaço de ação que será a entrada da função quando criarmos o objeto.
E depois adicionamos isso e conseguimos esse número de ações possíveis.
E agora o ator e o crítico tomarão separadamente o mesmo input que é o resultado de todo
esse processo aqui com as convoluções e o GLSEN.
Então, ele terá a mesma entrada que é um estado codificado, mas então eles terão duas conexões lineares diferentes
para que possamos eventualmente realmente duas redes neurais um para os dois e um para um crítico.
Então, vamos fazer essas duas redes neurais separadas.
Mas já que já fizemos o grande trabalho com o codificar aqui, o que simplesmente precisamos fazer é
criar dois objetos um na conexão completa para o ator e uma outra conexão linear para o crítico.
E então é exatamente o que eu vou fazer.
Eu vou criar dois objetos agora um primeiro objeto para a conexão linear do
crítico que vou chamar crítico e a pontuação Linnie e criar essa conexão linear.
Você sabe como fazê-lo, simplesmente precisamos pegar o módulo do motor e depois a classe linear à qual
temos duas entradas.
Bem, os neurônios de entrada que são as saídas de tudo isso, incluindo aqui com
as convoluções e o GM que é 256 neurônios.
Então, quando eu coloquei duzentos e cinquenta e seis aqui e depois vamos ter uma saída porque lembre-se da saída
da rede neural para o crítico é o valor da função aplicada ao estado de entrada para
os estados codificados de entradas que fizemos Aqui.
Então, se chamamos o estado de entrada s que é a saída de tudo isso, a saída da rede
neural do crítico será VS e, portanto, tem uma dimensão.
É apenas um valor.
E então aqui nós colocamos um.
E lembre-se que isso é o que é compartilhado entre os atores para que eles possam obter informações
comuns que possam usar para atuar de maneira mais relevante.
OK, então é para a rede neural do crítico.
E agora vamos fazer a nova rede do ator e, portanto, eu estou aqui ator autodidata linear e mesmo nós
já temos os estados codificados de insumos.
dizer que nós levamos o módulo em seguida a classe linear e agora dizendo
que esta nova rede do ator terá o estado codificado que tem o tamanho de 256, portanto 256 aqui.
Então, agora, simplesmente precisamos adicionar uma conexão linear e, portanto,
Mas, então, o resultado será diferente porque é claro que você sabe que a saída da rede
neural para o ator outra chave envolve os valores-chave dos estados de entrada.
Aquele que poderíamos ouvir e a placa de ação.
Então, novamente, se chamarmos esse estado codificado que queremos dizer aqui como uma ação desempenhada como resultado
dessa rede neural, na verdade, haverá q como um.
E como você sabe que temos um enorme valor para cada ação, então, não temos resultados.
portanto, a saída aqui não será saída porque nenhuma saída é realmente o número de humanos.
Q valores e,
Ok, perfeito.
Então, se você quiser, posso escrever para você produzir aqui.
O crítico é o bem, como é o estado codificado e para o ator, o resultado é bonito, tudo bem.
Então é muito importante entender esta distinção aqui e entender que, portanto, temos duas
redes de notícias separadas.
Um para o crítico e um para o ator Ok, perfeito.
Então, quase terminamos com essa função.
Agora, o mais importante é feito.
A única coisa restante que temos a fazer é inicializar todos os pesos dessas duas redes neurais e
todo o viés.
E, claro, para fazer isso, vamos usar as duas funções que fizemos anteriormente, que é o
inicializador de colunas normalizadas e os pesos nela.
Então vamos fazer isso rapidamente.
Vai ser bastante fácil e muito rápido.
aleatórios e, para isso, vamos aplicar os pesos na função para o nosso objeto.
Então, primeiro vamos inicializar alguns pesos
Então, aqui, temos de nos levar para obter nosso objeto e se opor.
Nós aplicamos o peso em sua função.
Portanto, dentro, precisamos colocar os pesos nessa função e, então, obtemos que aplicará essa função ao nosso
objeto e, ao fazê-lo, estamos apenas iniciando alguns pesos aleatórios para obter uma
ótima aprendizagem futura desses pesos.
E agora o que temos a fazer é fazer uma normalização especial para o ator e o crítico.
uma mesma variação para o X em acrílico eakked, você terá um pequeno desvio padrão de pequena variação.
Mas lembre-se que eu acho que eu disse isso nos tutoriais anteriores, não vamos definir
E os críticos receberão um grande.
E por que fazemos isso.
Qual o propósito de dar um pequeno desvio padrão dos pesos para o ator e o grande desvio
padrão do caminho para o crítico.
Bem, isso permite gerenciar a exploração versus exploração.
Esse é exatamente o propósito de fazer isso, dando uma pequena variância ao ator em uma audiência maior
para a crítica.
Teremos uma boa gestão da exploração versus exploração.
Então, vamos fazer isso, vamos primeiro cuidar do ator.
Então, nos levamos a si mesmo ou a um objeto, então vamos levar a rede neural do nosso ator,
que é o ator Linnea, então vamos acessar os pesos desta nova rede do ator e lembre-se de
acessar os dados dos pesos que precisamos esses dados.
Tudo bem.
Então, com isso, nós pegamos os pesos e agora vamos usar o mecanismo de inicialização de nosso processador de função normal.
Então eu estou copiando esta colagem aqui e vamos entrar em uma discussão.
O desvio padrão que queremos ter desses pesos.
Mas primeiro lembre-se de que esta função leva dois argumentos.
Primeiro, como queremos inicializar.
Então, simplesmente precisamos tomar isso novamente e basear isso aqui.
E o segundo argumento é o desvio padrão.
Queremos que esses pesos tenham.
Então, como dissemos, queremos um pequeno desvio padrão para o ator em um pequeno, será 0. 01 perfeito.
Então é aí que os pesos da rede neural do ator.
Agora vamos cuidar do viés do novo que funciona do ator.
E, portanto, aqui vamos fazer quase a mesma coisa que vamos copiar essa pasta abaixo.
Substitua o peso pelos compradores para acessar os compradores e, após os dados, simplesmente vamos adicionar preenchimento e lembrar-nos de dentro quando colocar zero
porque queremos que todos os dispositivos sejam inicializados com zero.
Então, na verdade, não acho que essa linha seja necessária porque, como você lembra, os compradores já foram inicializados
a zero com essa função de preenchimento na função de espera.
Então, você sabe que estamos fazendo isso apenas para garantir que os compradores sejam inicializados em zero.
Mas acho que já está feito aqui.
Mas de qualquer forma agora estamos 100% seguros.
Tudo bem agora vamos fazer o mesmo para o crítico.
Então, vamos ser eficientes e vamos cobrir essas duas linhas.
Vamos enfrentá-los aqui e aqui vamos substituir o ator pelo crítico.
O mesmo aqui.
E agora o único que temos que mudar é apenas o desvio padrão que queremos os pesos
da rede neural para a crítica ter.
lá, temos um pequeno desvio padrão para os pesos do novo trabalho do ator e um grande desvio padrão para os pesos.
E, como você se lembra, uma vez desta vez, um grande desvio padrão em vez de aberto
ou um, entraremos um, então, vamos
E então, quando chegamos ao crítico.
E é claro que é algo que conseguimos substituir ativos aqui por crédito.
Tudo bem agora ficamos legal.
Então, agora temos duas coisas restantes a fazer primeiro é inicializar também o viés da equipe e, para fazer isso, nós levamos o nosso objeto porque
a LACMA pertence ao nosso objeto e diriamos ou como T. N. então, e então vamos conseguir
os dois tipos de compradores que estão no último.
Esse é o viés e a pontuação por idade e o outro baseia-se na idade de idade.
Esses são os dois tipos de viés no CME e o mesmo será inicializado para zero.
Então, primeiro nós acessamos os dados e então usamos a função de sublinhado de preenchimento para preencher todos esses
compradores com zeros inicializá-los com os seus.
Certo.
E agora, para o segundo grupo de compradores, estamos aqui, o mesmo é substituído pela idade por idade.
Tudo bem.
coisa que precisamos fazer é usar um método herdado do final e desse módulo que é o método do trem.
Isso inicia o preconceito dos zeros e agora a última
E, basicamente, há apenas um método que coloca o módulo em tratamento.
Então, o que é o uso disso.
Bem, o uso é que ele permite ativar se há alguma queda nas ligaduras do banheiro.
E, portanto, para usá-lo, nós apenas adicionamos trem auto-pensado e isso coloca o módulo em bonde perfeito.
Então, terminamos com a função init.
Nós temos nossas convoluções, temos o CME, temos nossas duas redes neurais separadas para o crítico
e o ator e todos os pesos e preconceitos estão bem inicializados.
Então tudo bem.
Estamos prontos para avançar para o próximo passo, que é para tornar a função de avanço
que, naturalmente, irá propagar o sinal desde o início com as imagens de entrada originais em todo o
cérebro até obter a saída.
Então vamos fazer isso no próximo tutorial.
E até então, desfrute da AI.