ClumsyGrad#
A Simple Automatic Differentiation Library built on top of NumPy
Contents:
Key Features#
- Lightweight Design
Minimal dependencies - built primarily on NumPy
- Minimalist Architecture
Easy to understand and modify for experimentation
Quick Start Example#
from clumsygrad.tensor import Tensor, TensorType
from clumsygrad.loss import mse_loss
# Create tensors with gradient tracking
x = Tensor([[1.0, 2.0]], tensor_type=TensorType.INPUT)
W = Tensor([[3.0], [4.0]], tensor_type=TensorType.PARAMETER)
b = Tensor([5.0], tensor_type=TensorType.PARAMETER)
target = Tensor([15.0], tensor_type=TensorType.INPUT)
# Forward pass: linear transformation
output = x @ W + b # Matrix multiplication + bias
# Compute loss
loss = mse_loss(output, target)
# Backward pass: automatic differentiation
loss.backward()
# Gradients are now available
print(f"W gradient: {W.grad}")
print(f"b gradient: {b.grad}")
print(f"Loss: {loss.data}")
Installation#
To install ClumsyGrad, you can use pip:
pip install clumsygrad
Note
ClumsyGrad requires Python 3.9+ and NumPy.
Performance Notes#
Warning
ClumsyGrad is mainly designed by me for educational purposes, and may not be completely optimzed for performance.
Contributing#
ClumsyGrad welcomes contributions! Whether you’re:
Reporting bugs
Suggesting features
Improving documentation
Contributing code
Acknowledgments#
Inspired by PyTorch (obviously!) and other automatic differentiation frameworks.