https://github.com/ishanmanchanda/digits
Hand-written digit classification using a Neural Network built from scratch.
https://github.com/ishanmanchanda/digits
hacktoberfest machine-learning neural-network numpy python
Last synced: 7 months ago
JSON representation
Hand-written digit classification using a Neural Network built from scratch.
- Host: GitHub
- URL: https://github.com/ishanmanchanda/digits
- Owner: IshanManchanda
- License: mit
- Created: 2019-08-06T09:13:39.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-02-21T00:01:53.000Z (almost 3 years ago)
- Last Synced: 2023-03-03T21:27:34.016Z (almost 3 years ago)
- Topics: hacktoberfest, machine-learning, neural-network, numpy, python
- Language: Python
- Homepage:
- Size: 181 MB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# digits
Hand-written digit classification using a Neural Network built from scratch.
# Why digits?
The idea of implementing a neural network from scratch came to me while I was working through Prof. Andrew Ng's Machine Learning course on Coursera.
A lot of concepts involved in neural networks made intuitive sense to me, but I felt I could do more on the mathematical background of it.
Specifically, I wanted to get an idea of how computations can be vectorized with different activation and cost functions.
digits uses the Leaky Rectified Linear Unit (LReLU) and the Softmax functions as activation functions for the hidden layers and output layer (respectively),
and the Cross-Entropy Loss (or Log Loss) function as the cost function. The optimization function is Mini-batch Stochastic Gradient Descent (mini-batch SGD), and the partial derivatives are computed using Backpropagation. Furthermore, digits also uses preprocessing techniques such as deskewing on the MNIST dataset. Images drawn by the user undergo preprocessing as well, with additional steps such as normalization.
Aside from implementation, I also manually derived the vectorized formulae for the partial derivatives primarily using dimensional analysis.
### Major Technologies Used
- Python 3
- Numpy
- Matplotlib
- Scipy
- Pillow
- Weights & Biases