# jrgautam123/miniautograd architecture

> Architecture diagram of the GitHub repository jrgautam123/miniautograd, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jrgautam123/miniautograd
- Repository: https://github.com/jrgautam123/miniautograd

## Overview

miniautograd is an educational NumPy auto-differentiation library. A user can encode labels, run inputs through an MLP, compute a loss, and invoke backpropagation; the library does not provide an optimizer or training-loop orchestrator, so users coordinate those steps. The computation engine builds operation nodes and propagates gradients, while ParameterTracker records loss, parameter values, and gradient norms when called by the user. README capabilities guide the map; edges reflect the sampled implementation and documented features.

Main entry points: [`autograd/__init__.py`](https://github.com/jrgautam123/miniautograd/blob/main/autograd/__init__.py) (Public API), [`autograd/nn/nn.py`](https://github.com/jrgautam123/miniautograd/blob/main/autograd/nn/nn.py) (MLP), [`autograd/engine/engine.py`](https://github.com/jrgautam123/miniautograd/blob/main/autograd/engine/engine.py) (Value operations), [`autograd/loss/loss.py`](https://github.com/jrgautam123/miniautograd/blob/main/autograd/loss/loss.py) (Loss functions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_engine["Autograd engine"]
  node_value["Value operations<br/>[engine.py]"]
  node_backprop["Backward pass<br/>[engine.py]"]
end

subgraph group_model["Model and losses"]
  node_mlp["MLP<br/>[nn.py]"]
  node_loss["Loss functions<br/>[loss.py]"]
end

subgraph group_support["Input and tracking"]
  node_api["Public API<br/>[__init__.py]"]
  node_encoder["Label encoders<br/>[encoder.py]"]
  node_tracker["Parameter tracker<br/>[tracker.py]"]
end

node_user(("Library user"))

node_user -->|"imports"| node_api
node_api -->|"exports"| node_encoder
node_api -->|"exports"| node_mlp
node_api -->|"exports"| node_loss
node_api -->|"exports"| node_value
node_api -->|"exports"| node_tracker
node_user -->|"encodes labels"| node_encoder
node_user -->|"runs inputs"| node_mlp
node_mlp -->|"builds operations"| node_value
node_user -->|"computes loss"| node_loss
node_loss -->|"builds operations"| node_value
node_user -->|"invokes backward"| node_backprop
node_backprop -->|"propagates gradients"| node_value
node_user -->|"records metrics"| node_tracker
node_tracker -->|"reads parameters"| node_mlp

click node_api "https://github.com/jrgautam123/miniautograd/blob/main/autograd/__init__.py"
click node_encoder "https://github.com/jrgautam123/miniautograd/blob/main/autograd/encoder/encoder.py"
click node_mlp "https://github.com/jrgautam123/miniautograd/blob/main/autograd/nn/nn.py"
click node_loss "https://github.com/jrgautam123/miniautograd/blob/main/autograd/loss/loss.py"
click node_value "https://github.com/jrgautam123/miniautograd/blob/main/autograd/engine/engine.py"
click node_backprop "https://github.com/jrgautam123/miniautograd/blob/main/autograd/engine/engine.py"
click node_tracker "https://github.com/jrgautam123/miniautograd/blob/main/autograd/engine/tracker.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_value,node_backprop,node_user toneBlue
class node_mlp,node_loss toneAmber
class node_api,node_encoder,node_tracker toneMint
```

## Components

### Autograd engine

- [Value operations](https://github.com/jrgautam123/miniautograd/blob/main/autograd/engine/engine.py): `autograd/engine/engine.py`
- [Backward pass](https://github.com/jrgautam123/miniautograd/blob/main/autograd/engine/engine.py): `autograd/engine/engine.py`

### Model and losses

- [MLP](https://github.com/jrgautam123/miniautograd/blob/main/autograd/nn/nn.py): `autograd/nn/nn.py`
- [Loss functions](https://github.com/jrgautam123/miniautograd/blob/main/autograd/loss/loss.py): `autograd/loss/loss.py`

### Input and tracking

- [Public API](https://github.com/jrgautam123/miniautograd/blob/main/autograd/__init__.py): `autograd/__init__.py`
- [Label encoders](https://github.com/jrgautam123/miniautograd/blob/main/autograd/encoder/encoder.py): `autograd/encoder/encoder.py`
- [Parameter tracker](https://github.com/jrgautam123/miniautograd/blob/main/autograd/engine/tracker.py): `autograd/engine/tracker.py`

### Other components

- **Library user**

## Connections

- Library user → Public API: imports
- Public API → Label encoders: exports
- Public API → MLP: exports
- Public API → Loss functions: exports
- Public API → Value operations: exports
- Public API → Parameter tracker: exports
- Library user → Label encoders: encodes labels
- Library user → MLP: runs inputs
- MLP → Value operations: builds operations
- Library user → Loss functions: computes loss
- Loss functions → Value operations: builds operations
- Library user → Backward pass: invokes backward
- Backward pass → Value operations: propagates gradients
- Library user → Parameter tracker: records metrics
- Parameter tracker → MLP: reads parameters
