Skip to content

raphaelmta/DeepLearnig-CPP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Deep Learning: Rede Neural Convolucional em C++

Este repositório contém uma implementação completa de uma Rede Neural Convolucional (CNN) a partir do zero, utilizando C++ moderno (C++20) e CMake. O projeto foi desenvolvido para fins de estudo, focando em uma arquitetura modular e na corretude dos algoritmos de forward e backward propagation.

Funcionalidades

  • Implementação Pura em C++: Nenhuma biblioteca de Deep Learning externa foi utilizada.
  • Arquitetura Modular: O código é organizado com uma classe base Layer e implementações de camadas essenciais:
    • Conv2D (Convolução 2D)
    • Dense (Totalmente Conectada)
    • ReLU (Ativação)
    • Softmax (Ativação para classificação)
    • Flatten (Achatamento de tensor)
  • Testes Unitários: Inclui um módulo de teste unitário (RMTAtesteunitario) que valida cada componente da rede, utilizando verificação de gradiente numérico para garantir a corretude do backpropagation.
  • Sistema de Build com CMake: Utiliza CMake para facilitar a compilação em diferentes ambientes.

Requisitos

  • CMake: Versão 3.1 ou superior.
  • Compilador C++: Um compilador com suporte a C++20 (ex: GCC 10+, Clang 12+).

Como Compilar e Executar

1. Clonar o Repositório

git clone https://github.com/raphaelmta/DeepLearnig-CPP.git
cd DeepLearning-CPP

2. Baixar o Dataset MNIST

O modelo foi treinado e testado com o dataset MNIST.

  • Crie uma pasta chamada dados na raiz do projeto.
  • Baixe os 4 arquivos do dataset a partir do site oficial do MNIST e coloque-os dentro da pasta dados:
    • train-images-idx3-ubyte
    • train-labels-idx1-ubyte
    • t10k-images-idx3-ubyte
    • t10k-labels-idx1-ubyte

3. Compilar o Projeto

mkdir build
cd build
cmake ..
make

4. Executar os Programas

Os executáveis estarão dentro da pasta build.

  • Para rodar os testes unitários (recomendado):
./RMTAtesteunitario
  • Para iniciar o treinamento da rede:
./RMTAtreino ../dados/train-images-idx3-ubyte \
             ../dados/train-labels-idx1-ubyte \
             ../dados/t10k-images-idx3-ubyte \
             ../dados/t10k-labels-idx1-ubyte

Estrutura do Projeto

.
├── CMakeLists.txt         # Script de build
├── RMTAdataset.hpp        # Módulo de carregamento do dataset
├── RMTAmodelo.hpp         # Definição do Tensor e das camadas da rede
├── RMTAtreino.cpp         # Lógica de treinamento e avaliação do modelo
├── RMTAtesteunitario.cpp  # Testes unitários para garantir a corretude
├── dados/                 # Pasta para os arquivos do dataset (a ser criada)
└── build/                 # Pasta para os arquivos de compilação (a ser criada)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published