01 / Why from scratch?
Use less abstraction to understand what the network is actually doing.
Rather than relying on a deep learning framework to handle the training mechanics, the project used NumPy so the team had to work directly with the operations behind convolutional neural networks and backpropagation.
02 / Pipeline
Forward pass, prediction, error, backward pass, update.
The project applied the implementation to MNIST image classification and KinFaceW kinship verification, giving the same core network concepts two different problem contexts.
03 / Implementation
Training logic that we could inspect end to end.
- Pure NumPy implementation instead of a high level neural network framework.
- Manual backpropagation as part of the learning and implementation goal.
- Command line training workflow.
- Use on MNIST and KinFaceW datasets.
- Group collaboration on the overall implementation.
04 / What it demonstrates
Understanding the mechanics beneath high level ML frameworks.
Neural network code depends heavily on keeping tensor and matrix dimensions consistent across layers.
Implementing gradient flow manually makes the relationship between forward computations and parameter updates much more concrete.
Working closer to the underlying ML operations requires careful inspection because small implementation mistakes can propagate through the whole model.
Shared model code has to be understandable enough for multiple contributors to test and extend.