Skip to content

Latest commit

 

History

History
85 lines (61 loc) · 2.71 KB

File metadata and controls

85 lines (61 loc) · 2.71 KB

Classifier - Simple Neural Network in C

Classifier é uma implementação educacional de uma rede neural Multi-Layer Perceptron (MLP) escrita em C11. O projeto utiliza a biblioteca GSL (GNU Scientific Library) para operações de álgebra linear, garantindo cálculos matriciais eficientes para a propagação de valores entre camadas.

Funcionalidades

  • Estrutura Modular: Gerenciamento dinâmico de redes, camadas e neurônios.
  • Álgebra Linear: Uso de gsl_matrix e gsl_blas para cálculos de feedforward.
  • Função de Ativação: Implementação da função Sigmoid para normalização de outputs.
  • Visualização: Impressão elegante da estrutura da rede, valores e pesos no terminal.
  • Gerenciamento de Memória: Limpeza recursiva e segura de todos os recursos alocados.

Estrutura do Projeto

  • main.c: Script de teste que inicializa a rede e executa a propagação.
  • network.c: Implementação core da lógica da rede e cálculos matriciais.
  • network.h: Definições de tipos (structs) e protótipos de funções.
  • Makefile: Sistema de build automatizado.
  • project_spec.md: Especificação técnica detalhada.

Pré-requisitos

Para compilar este projeto, você precisará de:

  • GCC (ou qualquer compilador compatível com C11).
  • GSL (GNU Scientific Library):
    • No Ubuntu/Debian: sudo apt-get install libgsl-dev
    • No macOS (Homebrew): brew install gsl

Como Usar

  1. Compilar o projeto:

    make
  2. Executar os testes:

    make run
  3. Limpar arquivos temporários:

    make clean
  4. Remover tudo (incluindo o executável):

    make fclean

Exemplo de Saída

Ao rodar o projeto, você verá uma representação visual da rede antes e depois do cálculo de propagação:

--- Neural Network Structure ---

[Layer 0] (Input)
  ○ Neuron 0: Value: 1.000
  ○ Neuron 1: Value: 0.500

[Layer 1] (Hidden)
  ○ Neuron 0: Value: 0.000
    └── Weights: [ 0.234, -0.412 ]
  ...

Roadmap de Desenvolvimento

  • Estrutura modular de rede, camadas e neurônios.
  • Álgebra linear com GSL (feedforward básico).
  • Função de ativação Sigmoid.
  • Testes unitários (param, error, network, training).
  • Carregamento/Salvamento de modelos a partir de arquivos binários.
  • Armazenar z (saída linear pré-ativação) em cada neurônio.
  • Adicionar Bias em cada neurônio.
  • Atualizar calculate_layer_output() para usar bias e armazenar z.
  • Implementação de Backpropagation e cálculo de gradientes.
  • Training loop com descida de gradiente.
  • Suporte para diferentes funções de ativação (ReLU, Tanh).