← Open Source
kdexd

digit-classifier

A single handwritten digit classifier, using the MNIST dataset. Pure Numpy.

TutorialsML/AI fundamentalsPython
Open on GitHub
Momentum
+0stars in 24 hours0.0%
788
Stars
82
Forks
+0
This week
4
Contributors
Created 2015-10-21 · Updated 2026-09-17 · #13818 today
Top developers
radarhereChrisAntakimanojbalaji1

kdexd/digit-classifier is ranked 13,818 with 788 stars.

Same-category comparison

kdexd/digit-classifier is ranked 13,818 among these 8 peers; svjan5/GNNs-for-NLP is ranked 13,811.

Same-category comparison
NameRankMetrics
ws13685555932/machine_learning_derivation13,801
Stars:
790
Forks:
224
Description:
notes of machine learning algorithm derivation.
ltdrdata/ComfyUI-extension-tutorials13,806
Stars:
789
Forks:
53
panaverse/learn-generative-ai13,810
Language:
Python
Stars:
789
Forks:
286
Description:
Learn Cloud Applied Generative AI Engineering (GenEng) using OpenAI, Gemini, Streamlit, Containers, Serverless, Postgres, LangChain, Pinecone, and Next.js.
svjan5/GNNs-for-NLP13,811
Language:
Python
Stars:
789
Forks:
111
Description:
Tutorial: Graph Neural Networks for Natural Language Processing at EMNLP 2019 and CODS-COMAD 2020.
prateekbhustali/Physics-Informed-Neural-Networks13,825
Language:
Jupyter Notebook
Stars:
787
Forks:
159
Description:
Investigating PINNs.
keras-team/keras-docs-zh13,836
Stars:
786
Forks:
254
Description:
Chinese (zh-cn) translation of the Keras documentation.
petercorke/RVC3-python13,847
Language:
Jupyter Notebook
Stars:
785
Forks:
177
Description:
Code examples for Robotics, Vision & Control 3rd edition in Python.
wx-chevalier/AI-Notes13,850
Language:
Jupyter Notebook
Stars:
785
Forks:
239
Description:
:books: [.md & .ipynb] Series of Artificial Intelligence & Deep Learning, including Mathematics Fundamentals, Python Practices, NLP Application, etc.
Key parameters and specifications
Key parameters and specifications
ParameterValue
LanguagePython
CategoryTutorials
SubcategoryML/AI fundamentals
Stars788
Forks82
Contributors4
Created date2015-10-21
Updated date2026-09-17
Stars in 1 day0
Stars in 7 days0
Rank13,818
Previous rank13,710
Rank change-108
7-day stars rank14,136
Previous 7-day stars rank14,157
7-day stars rank change21
Total stars rank13,523
Previous total stars rank13,507
Total stars rank change-16
CountryUSA
README summary

MNIST Handwritten Digit Classifier ================================== An implementation of multilayer neural network using library. The implementation is a modified version of Michael Nielsen's implementation in Neural Networks and Deep Learning book. Brief Background: If you are familiar with basics of Neural Networks, feel free to skip this section. For total beginners who landed up here before reading anything about Neural Networks: Neural networks are made up of building blocks known as **Sigmoid Neurons**. These are named so because their output follows Sigmoid

Function. **x j ** are inputs, which are weighted by **w j ** weights and the neuron has its intrinsic bias **b**. The output of neuron is known as "activation ( **a** )". _**Note:** There are other functions in use other than sigmoid, but this information for now is sufficient for beginners. _ A neural network is made up by stacking layers of neurons, and is defined by the weights of connections and biases of neurons. Activations are a result dependent on a certain input

. This book and Stanford's Machine Learning Course by Prof. Andrew Ng are recommended as good resources for beginners. At times, it got confusing to me while referring both resources: MATLAB has _1-indexed_ data structures, while has them _0-indexed_. Some parameters of a neural network are not defined for the input layer, so there was a little mess up in mathematical equations of book, and indices in code. For example according to the book, the bias vector of second

layer of neural network was referred as as input layer (first layer) has no bias vector. I found it a bit inconvenient to play with. I am fond of Scikit Learn's API style, hence my class has a similar structure of code. While theoretically it resembles the book and Stanford's course, you can find simple methods such as , , to train, test, validate the model respectively. Naming and Indexing Convention: I have followed a particular convention in indexing quantities. Dimensions of

quantities are listed according to this figure. **Layers** Input layer is the **0 th ** layer, and output layer is the **L th ** layer. **Weights** Weights in this neural network implementation are a list of matrices ( ). is a matrix of weights entering the **l th ** layer of the network (Denoted as **w l **). An element of this matrix is denoted as **w l jk **. It is a part of **j th ** row, which is a collection of all weights entering **j

th ** neuron, from all neurons (0 to k) of **(l-1) th ** layer. No weights enter the input layer, hence is redundant, and further it follows as being the collection of weights entering layer 1 and so on. **Biases** Biases in this neural network implementation are a list of one-dimensional vectors ( ). is a vector of biases of neurons in the **l th ** layer of network (Denoted as **b l **). An element of this vector is denoted as **b l

j **. It is a part of **j th ** row, the bias of **j th ** in layer. Input layer has no

Frequently asked questions

How many stars and forks are recorded?

kdexd/digit-classifier has 788 stars and 82 forks.

What is the repository rank?

kdexd/digit-classifier is ranked 13,818.

What language and category are recorded?

kdexd/digit-classifier has 788 stars, uses Python and belongs to Tutorials.

Which repository is closest in rank?

kdexd/digit-classifier is compared with svjan5/GNNs-for-NLP, ranked 13,811 with 789 stars.

README

MNIST Handwritten Digit Classifier

An implementation of multilayer neural network using numpy library. The implementation is a modified version of Michael Nielsen's implementation in Neural Networks and Deep Learning book.

Brief Background:

If you are familiar with basics of Neural Networks, feel free to skip this section. For total beginners who landed up here before reading anything about Neural Networks:

  • Neural networks are made up of building blocks known as Sigmoid Neurons. These are named so because their output follows Sigmoid Function.
  • xj are inputs, which are weighted by wj weights and the neuron has its intrinsic bias b. The output of neuron is known as "activation ( a )".

Note: There are other functions in use other than sigmoid, but this information for now is sufficient for beginners.

  • A neural network is made up by stacking layers of neurons, and is defined by the weights of connections and biases of neurons. Activations are a result dependent on a certain input.

Why a modified implementation ?

This book and Stanford's Machine Learning Course by Prof. Andrew Ng are recommended as good resources for beginners. At times, it got confusing to me while referring both resources:

MATLAB has 1-indexed data structures, while numpy has them 0-indexed. Some parameters of a neural network are not defined for the input layer, so there was a little mess up in mathematical equations of book, and indices in code. For example according to the book, the bias vector of second layer of neural network was referred as bias[0] as input layer (first layer) has no bias vector. I found it a bit inconvenient to play with.

I am fond of Scikit Learn's API style, hence my class has a similar structure of code. While theoretically it resembles the book and Stanford's course, you can find simple methods such as fit, predict, validate to train, test, validate the model respectively.

Naming and Indexing Convention:

I have followed a particular convention in indexing quantities. Dimensions of quantities are listed according to this figure.

Layers

  • Input layer is the 0th layer, and output layer is the Lth layer. Number of layers: NL = L + 1.
sizes = [2, 3, 1]

Weights

  • Weights in this neural network implementation are a list of matrices (numpy.ndarrays). weights[l] is a matrix of weights entering the lth layer of the network (Denoted as wl).
  • An element of this matrix is denoted as wljk. It is a part of jth row, which is a collection of all weights entering jth neuron, from all neurons (0 to k) of (l-1)th layer.
  • No weights enter the input layer, hence weights[0] is redundant, and further it follows as weights[1] being the collection of weights entering layer 1 and so on.
weights = |¯   [[]],    [[a, b],    [[p],   ¯|
          |              [c, d],     [q],    |
          |_             [e, f]],    [r]]   _|

Biases

  • Biases in this neural network implementation are a list of one-dimensional vectors (numpy.ndarrays). biases[l] is a vector of biases of neurons in the lth layer of network (Denoted as bl).
  • An element of this vector is denoted as blj. It is a part of jth row, the bias of jth in layer.
  • Input layer has no biases, hence biases[0] is redundant, and further it follows as biases[1] being the biases of neurons of layer 1 and so on.
biases = |¯   [[],    [[0],    [[0]]   ¯|
         |     []],    [1],             |
         |_            [2]],           _|

'Z's

  • For input vector x to a layer l, z is defined as: zl = wl . x + bl
  • Input layer provides x vector as input to layer 1, and itself has no input, weight or bias, hence zs[0] is redundant.
  • Dimensions of zs will be same as biases.

Activations

  • Activations of lth layer are outputs from neurons of lth which serve as input to (l+1)th layer. The dimensions of biases, zs and activations are similar.
  • Input layer provides x vector as input to layer 1, hence activations[0] can be related to x - the input training example.

Execution of Neural network

#to train and test the neural network algorithm, please use the following command
python main.py
Nearby in the ranking
Similar items