Repolode
itskonrad

itskonrad/tinymnist

순수 C로 작성된 약 250줄짜리 최소 신경망으로 손글씨 MNIST 숫자를 분류하도록 학습합니다.

스타
1,287
포크
130
열린 이슈
3
마지막 커밋
24일 전

어떤 프로젝트인가요?

tinymnist는 MNIST 데이터셋의 손글씨 숫자를 분류하는 순수 C 기반의 소형 신경망입니다. 프로그램 전체가 약 250줄이며 C 표준 라이브러리 외에는 의존성이 없습니다.

모델은 입력 784개, 유닛 256개로 구성된 ReLU 은닉층, 10개 클래스를 출력하는 softmax로 이루어진 완전 연결 네트워크이며, cross-entropy loss와 momentum을 적용한 SGD로 학습합니다. MNIST 학습 데이터가 data 디렉터리에 포함되어 있어 gcc로 컴파일한 뒤 바로 실행할 수 있습니다.

이 프로젝트는 20 epoch 학습 후 테스트 정확도가 약 98%이며, epoch당 소요 시간은 약 0.5초라고 보고합니다. 데이터의 80%는 학습에 사용하고 나머지 20%는 테스트용으로 따로 둡니다. 은닉층 크기, learning rate, momentum, epoch 수, 학습 데이터 비율 등의 하이퍼파라미터는 main.c 상단의 #define 상수로 설정합니다.

핵심 기능

  • 01표준 라이브러리 외에 의존성이 없는 순수 C 구현
  • 02ReLU와 softmax를 사용하는 2층 완전 연결 네트워크
  • 03cross-entropy loss와 momentum을 적용한 SGD로 학습
  • 04MNIST 학습 데이터가 포함되어 있어 별도 준비 없이 실행 가능
  • 05#define 상수로 하이퍼파라미터 조정 가능

활용 사례

  • 신경망이 가장 낮은 수준에서 어떻게 작동하는지 학습
  • 딥러닝 프레임워크 없이 순전파와 역전파 살펴보기
  • MNIST 분류 실험을 위한 간결한 기준 모델

빠른 시작

  1. 1

    gcc로 프로그램을 컴파일합니다

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

    처음부터 학습한 네트워크를 실행합니다(MNIST 데이터는 data/에 포함되어 있습니다)

    ./main

사용 전 알아둘 점

  • 교육용 초소형 모델일 뿐, 실제 환경에서 사용할 수 있는 숫자 분류기는 아닙니다.
  • 설정을 변경하려면 main.c의 #define 상수를 수정한 뒤 다시 컴파일해야 합니다.

포함된 컬렉션

토픽

자주 묻는 질문

tinymnist은(는) 무엇인가요?
순수 C로 작성된 약 250줄짜리 최소 신경망으로 손글씨 MNIST 숫자를 분류하도록 학습합니다. tinymnist는 MNIST 데이터셋의 손글씨 숫자를 분류하는 순수 C 기반의 소형 신경망입니다. 프로그램 전체가 약 250줄이며 C 표준 라이브러리 외에는 의존성이 없습니다.
tinymnist은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
tinymnist은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
tinymnist은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. tinymnist의 마지막 커밋은 2026년 10월 13일입니다.
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를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트