Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/caiotaavares/neurog_neural_network
Neural Network implementation
https://github.com/caiotaavares/neurog_neural_network
fyne golang neural-network
Last synced: 25 days ago
JSON representation
Neural Network implementation
- Host: GitHub
- URL: https://github.com/caiotaavares/neurog_neural_network
- Owner: caiotaavares
- Created: 2023-11-09T01:36:21.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-24T16:46:51.000Z (about 1 year ago)
- Last Synced: 2023-11-30T18:04:42.154Z (about 1 year ago)
- Topics: fyne, golang, neural-network
- Language: Go
- Homepage:
- Size: 2.14 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
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.