Skip to content

caiotaavares/neurog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

neurog

Este código é uma implementação em Go de uma rede neural simples com o propósito de classificar flores íris com base no conjunto de dados de flores íris. O código é dividido em várias partes, incluindo a definição da arquitetura da rede neural, a implementação do retropropagação (backpropagation) para treinamento e a criação de um método de feedforward para fazer previsões. Vamos analisar como este código funciona passo a passo:

Definindo Funções e Tipos Úteis: O código começa definindo tipos e funções personalizados que serão usados ao longo da implementação. O tipo neuralNet representa a rede neural, contendo sua configuração, pesos e viés (bias) para as camadas ocultas e de saída. O tipo neuralNetConfig define a arquitetura e os parâmetros de aprendizado da rede neural. A função newNetwork inicializa uma nova rede neural com a configuração fornecida. Também existem duas funções, sigmoid e sigmoidPrime, que definem a função de ativação sigmoid e sua derivada.

Implementando Retropropagação (Backpropagation) para Treinamento: O cerne desta implementação de rede neural é o método de retropropagação, que é usado para treinar a rede. O método train treina a rede neural recebendo matrizes de entrada x (recursos) e y (rótulos) e ajustando os pesos e os viés da rede. Começa por inicializar pesos e viés aleatórios para a rede. Em seguida, realiza o processo de avanço (feedforward) para calcular a saída da rede. A seguir, calcula o erro entre a saída prevista e os rótulos reais. Calcula os gradientes para os pesos e os viés usando a retropropagação e a derivada da função sigmoid. Finalmente, ajusta os pesos e os viés usando o método do gradiente estocástico descendente (SGD) por um número especificado de épocas.

Implementando Feed Forward (Avanço) para Previsão: Após o treinamento da rede neural, você pode usá-la para fazer previsões. O método predict recebe os dados de entrada x e retorna a saída prevista. Ele realiza um processo semelhante de avanço (feedforward) ao da fase de treinamento, usando os pesos e os viés treinados para calcular a saída.

Os Dados: O código também fornece informações sobre os dados usados para treinar e testar a rede neural. Os dados são baseados no conjunto de dados da íris, com algum pré-processamento para converter os rótulos de espécies em uma codificação one-hot.

Colocando Tudo Junto: Na função main, o código lê os dados de treinamento de um arquivo CSV e os prepara para o treinamento. Ele define a arquitetura da rede e os parâmetros de aprendizado. Em seguida, treina a rede neural chamando o método train com os recursos de entrada e os rótulos.

Teste e Cálculo da Precisão: Após o treinamento, o código analisa os dados de teste e usa o método predict para fazer previsões. Calcula a precisão do modelo comparando a classe prevista com a classe real e contando o número de previsões corretas.

Resultados: O código fornece a precisão da rede neural nos dados de teste, o que indica o quão bem a rede aprendeu a classificar flores íris.

Este código demonstra uma rede neural simples implementada do zero em Go com o objetivo de resolver um problema de classificação. Ele destaca os componentes essenciais de uma rede neural, incluindo avanço, retropropagação e previsão. A arquitetura específica e os parâmetros podem ser ajustados com base no problema em questão.

Releases

No releases published

Packages

No packages published

Languages