How thien-z3d3r/deep-learning-library-in-c-from-scratch works
This is a self-contained C99 deep-learning library. Its principal workflow is to build tensors and trainable layers, compute a loss, run reverse-mode backpropagation, then update parameters with SGD or Adam. The README also documents XOR and classification benchmark examples. Source excerpts show tensor/autograd, layer/loss, and optimizer responsibilities; example-to-library links are based on README descriptions, not inspected example source.
Main entry points: stress_tests.c Classification benchmarks · tensor.c Tensor operations · nn.c Linear layer · autograd.c Differentiable operations
Components 11
Tensor engine
- Tensor operations
src/tensor.c
Autograd engine
- Differentiable operations
src/autograd.c - Backward traversal
src/autograd.c
Model training
- Linear layer
src/nn.c - Parameter list
src/nn.c - Loss functions
src/nn.c - SGD optimizer
src/optim.c - Adam optimizer
src/optim.c - XOR example
examples/xor.c - Classification benchmarks
examples/stress_tests.c
Other components
- Training program
Connections 18
- Training program → XOR example: runs
README.md - Training program → Classification benchmarks: runs
README.md - XOR example → Linear layer: trains with
README.md - XOR example → Adam optimizer: updates with
README.md - Linear layer → Tensor operations: computes with
src/nn.c - Linear layer → Parameter list: collects
src/nn.c - Loss functions → Tensor operations: computes with
src/nn.c - Loss functions → Differentiable operations: records gradients
src/nn.c - Differentiable operations → Tensor operations: retains tensors
src/autograd.c - Backward traversal → Differentiable operations: dispatches backward
src/autograd.c - Backward traversal → Tensor operations: accumulates gradients
src/autograd.c - Tensor operations → Differentiable operations: frees contexts
src/tensor.c - SGD optimizer → Parameter list: updates
src/optim.c - Adam optimizer → Parameter list: updates
src/optim.c - Classification benchmarks → Linear layer: trains with
README.md - Classification benchmarks → SGD optimizer: uses SGD
README.md - Classification benchmarks → Adam optimizer: uses AdamW
README.md - Classification benchmarks → Loss functions: uses cross-entropy
README.md