Repolode
itskonrad

itskonrad/tinymnist

Una red neuronal mínima escrita en C puro que aprende a clasificar dígitos manuscritos de MNIST en unas 250 líneas.

Estrellas
1,287
Forks
130
Issues abiertos
3
Último commit
hace 24 días

¿Qué es?

tinymnist es una pequeña red neuronal implementada en C puro que clasifica dígitos manuscritos del conjunto de datos MNIST. El programa completo tiene unas 250 líneas y solo depende de la biblioteca estándar de C.

El modelo es una red totalmente conectada con 784 entradas, una capa oculta de 256 unidades con ReLU y una salida softmax de 10 clases. Se entrena con una función de pérdida de entropía cruzada y SGD con momentum. El conjunto de entrenamiento de MNIST viene incluido en el directorio data, así que se puede compilar con gcc y ejecutar directamente.

El proyecto informa de una precisión de aproximadamente el 98 % en las pruebas tras 20 épocas, y cada época tarda alrededor de medio segundo. Para el entrenamiento se usa el 80 % de los datos y se reserva el 20 % restante para las pruebas. Los hiperparámetros, como el tamaño de la capa oculta, la tasa de aprendizaje, el momentum, el número de épocas y la división de los datos de entrenamiento, se configuran mediante constantes #define al principio de main.c.

Funciones clave

  • 01Implementación en C puro, sin dependencias más allá de la biblioteca estándar
  • 02Red totalmente conectada de dos capas con ReLU y softmax
  • 03Entrenamiento con una función de pérdida de entropía cruzada y SGD con momentum
  • 04Incluye los datos de entrenamiento de MNIST, por lo que funciona directamente
  • 05Los hiperparámetros se pueden ajustar mediante constantes #define

Casos de uso

  • Aprender cómo funciona una red neuronal desde sus fundamentos
  • Estudiar las pasadas hacia adelante y hacia atrás sin un framework de deep learning
  • Usarla como referencia compacta para experimentos de clasificación de MNIST

Inicio rápido

  1. 1

    Compila el programa con gcc

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

    Ejecuta la red entrenada desde cero (los datos de MNIST están incluidos en data/)

    ./main

Antes de usarlo

  • Es solo un modelo didáctico muy pequeño, no un clasificador de dígitos práctico para uso real.
  • Para cambiar la configuración, hay que editar las constantes #define de main.c y volver a compilar.

En colecciones

Temas

Preguntas frecuentes

¿Qué es tinymnist?
Una red neuronal mínima escrita en C puro que aprende a clasificar dígitos manuscritos de MNIST en unas 250 líneas. tinymnist es una pequeña red neuronal implementada en C puro que clasifica dígitos manuscritos del conjunto de datos MNIST. El programa completo tiene unas 250 líneas y solo depende de la biblioteca estándar de C.
¿tinymnist es gratuito? ¿Qué licencia tiene?
tinymnist es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿tinymnist sigue mantenido?
Mantenimiento activo. El último commit de tinymnist fue el 13 oct 2026.
¿Para qué puedo usar tinymnist?
Aprender cómo funciona una red neuronal desde sus fundamentos Estudiar las pasadas hacia adelante y hacia atrás sin un framework de deep learning Usarla como referencia compacta para experimentos de clasificación de MNIST
¿Cómo se instala tinymnist?
Compila el programa con gcc: gcc -O3 -march=native -ffast-math -o main main.c -lm Ejecuta la red entrenada desde cero (los datos de MNIST están incluidos en data/): ./main
¿Dónde consigo tinymnist?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/itskonrad/tinymnist

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados