chapeuzinho_steampunk

Rede Chapeuzinho Vermelho - Parte 2

Vamos corrigir o código para que a rede "Chapeuzinho Vermelho" tenha apenas uma camada oculta com 3 neurônios, conforme solicitado. Além disso, vou explicar como você pode associar labels (etiquetas) às entradas e saídas para identificar o que cada ponto representa.

Rede Chapeuzinho Vermelho - Parte 2Código corrigido (rede com apenas 1 camada oculta):Explicação das mudançasAssociando labels (etiquetas) aos neurôniosExemplo de dados com labelsAcrescentando labels aos nerônios da camada invisívelExibindo resultados com labelsSaída esperadaVersão 3 da Rede Chapeuzinho VermelhoAcrescentando gráficos de barras para as saídasAcrescentado apresentação das entradas ativadasIdéia FinalVersão 5 do códigoSaída geradaResumoHiperparâmetros da rede1. Epochs2. Batch Size3. Relação entre Epochs e Batch Size4. Impacto no Treinamento5. Como escolher os valores?6. Aplicando ao seu código7. Dicas para melhorar o treinamentoResumo


Código corrigido (rede com apenas 1 camada oculta):

Explicação das mudanças

  1. Apenas uma camada oculta:

    • Foi removida a segunda camada oculta (Dense(units=3, activation='sigmoid')), deixando apenas uma camada oculta com 3 neurônios.
    • A camada de entrada (input_dim=6) se conecta diretamente à camada oculta, que por sua vez se conecta à camada de saída.
  2. Função de ativação sigmoidal:

    • A função de ativação sigmoidal é usada tanto na camada oculta quanto na camada de saída, garantindo que os valores de saída estejam no intervalo [0, 1].
  3. Resumo do modelo:

    • O método model.summary() exibe a arquitetura da rede, mostrando o número de parâmetros em cada camada.

Executando...

Executando esta primeira parte num interpretador Python, obtemos:

Obs.: Para executar estes scripts se faz necessário já ter o TensorFlow instalado. instruções sobre Como instalar o TensorFlow, clicar aqui.

Associando labels (etiquetas) aos neurônios

Em redes neurais, os dados de entrada e saída são geralmente representados como arrays numéricos. No entanto, você pode associar labels (etiquetas) a esses dados para identificar o que cada ponto representa. Isso é feito fora do modelo, durante o pré-processamento dos dados ou na exibição dos resultados.

Aqui está um exemplo de como você pode associar labels às entradas e saídas:

Exemplo de dados com labels

Acrescentando labels aos nerônios da camada invisível

É possível associar labels (etiquetas) aos neurônios da camada oculta (invisível) para facilitar a interpretação do que cada neurônio representa. No entanto, é importante entender que os neurônios em uma camada oculta não têm um significado intrínseco ou direto como os neurônios de entrada ou saída. Eles aprendem representações internas dos dados durante o treinamento, e essas representações podem não ser diretamente interpretáveis.

Ainda assim, você pode atribuir labels aos neurônios da camada oculta para fins de visualização ou análise. Abaixo, vou mostrar como você pode fazer isso. No código Python, após definir a rede, você pode acrescentar linhas com:

Exibindo resultados com labels

Após treinar o modelo, você pode exibir os resultados associando os labels às saídas:

Saída esperada

Se o modelo for treinado e fizer previsões, a saída será algo como:

Versão 3 da Rede Chapeuzinho Vermelho

Vamos incrementar algo mais o código da rede para o Chapeuzinho Vermelho acrescentando 2 funções extras:

Acrescentando gráficos de barras para as saídas

  1. Função bargraph:

Acrescentado apresentação das entradas ativadas

  1. Função activated_inputs:

Idéia Final

Versão 5 do código

Segue listagem red_version_5.py :

Saída gerada

E ainda temos o gráfico que mostra a evolução do treinamento:

red_version_5

Obs.:

Resumo

  1. A rede "Chapeuzinho Vermelho" foi corrigida para ter apenas uma camada oculta.
  2. Labels foram associados às entradas e saídas para identificar o que cada ponto representa. Isso é feito durante o pré-processamento dos dados ou na exibição dos resultados.
  3. O uso de labels não afeta o funcionamento do modelo, mas facilita a interpretação dos dados e resultados.

Hiperparâmetros da rede

Vamos esclarecer a diferença entre epochs e batch_size, dois hiperparâmetros fundamentais no treinamento de redes neurais. Ambos estão relacionados ao processo de aprendizado, mas desempenham papéis diferentes.

1. Epochs


2. Batch Size

3. Relação entre Epochs e Batch Size

4. Impacto no Treinamento

5. Como escolher os valores?

6. Aplicando ao seu código

No seu caso, o modelo pode não estar bem treinado porque:

  1. O número de epochs pode ser insuficiente.
  2. O batch size pode não ser adequado.
  3. O conjunto de dados de treinamento pode ser muito pequeno.

Aqui está um exemplo de como ajustar esses parâmetros no seu código:

7. Dicas para melhorar o treinamento

Resumo

Segue para: Parte 3 (ainda não disponível)


17/03/2025