Repolode
itskonrad

itskonrad/tinymnist

Минимальная нейросеть на чистом C, которая примерно за 250 строк учится распознавать рукописные цифры MNIST.

Звёзды
1,287
Форки
130
Открытые issues
3
Последний коммит
25 дней назад

Что это?

tinymnist — небольшая нейросеть на чистом C для распознавания рукописных цифр из датасета MNIST. Вся программа занимает около 250 строк и использует только стандартную библиотеку C.

Модель — полносвязная сеть с 784 входами, скрытым слоем ReLU на 256 нейронов и выходным слоем softmax на 10 классов. Обучение идёт с функцией потерь cross-entropy и методом SGD с momentum. Обучающая выборка MNIST включена в каталог data, поэтому программу можно скомпилировать с помощью gcc и сразу запустить.

По данным проекта, после 20 эпох точность на тестовой выборке составляет около 98%, а одна эпоха занимает примерно полсекунды. Для обучения используется 80% данных, оставшиеся 20% отложены для тестирования. Гиперпараметры — такие как размер скрытого слоя, скорость обучения, momentum, число эпох и доля данных для обучения — задаются константами #define в начале main.c.

Ключевые возможности

  • 01Реализация на чистом C без зависимостей, кроме стандартной библиотеки
  • 02Двухслойная полносвязная сеть с ReLU и softmax
  • 03Обучение с функцией потерь cross-entropy и методом SGD с momentum
  • 04Обучающая выборка MNIST уже включена — программа готова к запуску
  • 05Гиперпараметры настраиваются с помощью констант #define

Сценарии использования

  • Изучение устройства нейросети на самом низком уровне
  • Изучение прямого и обратного проходов без фреймворка для глубокого обучения
  • Компактная базовая модель для экспериментов по классификации MNIST

Быстрый старт

  1. 1

    Скомпилируйте программу с помощью gcc

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

    Запустите сеть, обученную с нуля (данные MNIST включены в data/)

    ./main

Что важно знать

  • Это лишь крошечная учебная модель, а не практический классификатор цифр для реального использования.
  • Чтобы изменить конфигурацию, нужно отредактировать константы #define в main.c и заново скомпилировать программу.

В подборках

Темы

Частые вопросы

Что такое tinymnist?
Минимальная нейросеть на чистом C, которая примерно за 250 строк учится распознавать рукописные цифры MNIST. tinymnist — небольшая нейросеть на чистом C для распознавания рукописных цифр из датасета MNIST. Вся программа занимает около 250 строк и использует только стандартную библиотеку C.
tinymnist можно использовать бесплатно? Какая у него лицензия?
tinymnist распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
tinymnist всё ещё поддерживается?
Активно поддерживается. Последний коммит в tinymnist — 13 окт. 2026 г..
Для чего можно использовать tinymnist?
Изучение устройства нейросети на самом низком уровне Изучение прямого и обратного проходов без фреймворка для глубокого обучения Компактная базовая модель для экспериментов по классификации MNIST
Как установить tinymnist?
Скомпилируйте программу с помощью gcc: gcc -O3 -march=native -ffast-math -o main main.c -lm Запустите сеть, обученную с нуля (данные MNIST включены в data/): ./main
Где скачать tinymnist?
Исходный код и инструкции по установке — на GitHub: https://github.com/itskonrad/tinymnist

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты