Repolode
itskonrad

itskonrad/tinymnist

Uma rede neural minimalista escrita em C puro que aprende a classificar dígitos manuscritos do MNIST em cerca de 250 linhas.

Estrelas
1,287
Forks
130
Issues abertas
3
Último commit
há 25 dias

O que é?

tinymnist é uma pequena rede neural implementada em C puro que classifica dígitos manuscritos do conjunto de dados MNIST. O programa inteiro tem cerca de 250 linhas e depende apenas da biblioteca padrão do C.

O modelo é uma rede totalmente conectada com 784 entradas, uma camada oculta ReLU de 256 unidades e uma saída softmax com 10 classes, treinada com a função de perda cross-entropy e SGD com momentum. O conjunto de treinamento do MNIST está incluído no diretório data, então o programa pode ser compilado com gcc e executado diretamente.

O projeto relata uma acurácia de teste de cerca de 98% após 20 épocas, com cada época levando aproximadamente meio segundo. O treinamento usa 80% dos dados, e os 20% restantes ficam reservados para teste. Hiperparâmetros como tamanho da camada oculta, taxa de aprendizado, momentum, número de épocas e divisão entre treino e teste são definidos por constantes #define no início de main.c.

Recursos principais

  • 01Implementação em C puro, sem dependências além da biblioteca padrão
  • 02Rede totalmente conectada com duas camadas, ReLU e softmax
  • 03Treina com a função de perda cross-entropy e SGD com momentum
  • 04Inclui os dados de treinamento do MNIST, então funciona sem configuração adicional
  • 05Hiperparâmetros ajustáveis por meio de constantes #define

Casos de uso

  • Aprender como uma rede neural funciona em baixo nível
  • Estudar as etapas forward e backward sem um framework de deep learning
  • Usar como baseline compacto em experimentos de classificação do MNIST

Início rápido

  1. 1

    Compile o programa com gcc

    gcc -O3 -march=native -ffast-math -o main main.c -lm
  2. 2

    Execute a rede treinada do zero (os dados do MNIST estão incluídos em data/)

    ./main

Antes de usar

  • É apenas um modelo didático minúsculo, não um classificador de dígitos prático para uso real.
  • Para alterar a configuração, é preciso editar as constantes #define em main.c e recompilar.

Em coleções

Tópicos

Perguntas frequentes

O que é tinymnist?
Uma rede neural minimalista escrita em C puro que aprende a classificar dígitos manuscritos do MNIST em cerca de 250 linhas. tinymnist é uma pequena rede neural implementada em C puro que classifica dígitos manuscritos do conjunto de dados MNIST. O programa inteiro tem cerca de 250 linhas e depende apenas da biblioteca padrão do C.
tinymnist é gratuito? Qual é a licença?
tinymnist é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
tinymnist ainda é mantido?
Manutenção ativa. O último commit de tinymnist foi em 13 de out. de 2026.
Para que posso usar tinymnist?
Aprender como uma rede neural funciona em baixo nível Estudar as etapas forward e backward sem um framework de deep learning Usar como baseline compacto em experimentos de classificação do MNIST
Como instalar tinymnist?
Compile o programa com gcc: gcc -O3 -march=native -ffast-math -o main main.c -lm Execute a rede treinada do zero (os dados do MNIST estão incluídos em data/): ./main
Onde consigo tinymnist?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/itskonrad/tinymnist

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados