# vohongquann/neurokit architecture

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

- Interactive diagram: https://gitdiagram.com/vohongquann/neurokit
- Repository: https://github.com/vohongquann/neurokit

## Overview

Neurokit is an educational, NumPy-based deep-learning framework. A typical user generates or supplies data, builds a model from modules and parameters, computes a loss, calls backward to accumulate gradients, and uses an optimizer to update parameters. Its internals center on Tensor/Function autograd, differentiable operations, and saved forward context. The README also documents synthetic data generation and regression/classification examples. Source excerpts support the core runtime links; some documented capabilities, such as particular optimizer and generator variants, are represented at their shared module paths rather than individually traced.

Main entry points: [`neurokit/function.py`](https://github.com/vohongquann/neurokit/blob/main/neurokit/function.py) (Function dispatch), [`neurokit/tensor.py`](https://github.com/vohongquann/neurokit/blob/main/neurokit/tensor.py) (Tensor and backward), [`neurokit/nn/parameter.py`](https://github.com/vohongquann/neurokit/blob/main/neurokit/nn/parameter.py) (Trainable parameters), [`neurokit/nn/linear.py`](https://github.com/vohongquann/neurokit/blob/main/neurokit/nn/linear.py) (Linear layer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_autograd["Autograd core"]
  node_tensor["Tensor and backward<br/>[tensor.py]"]
  node_function["Function dispatch<br/>[function.py]"]
  node_ops["Tensor operations<br/>[ops.py]"]
  node_context["Saved context<br/>[context.py]"]
end

subgraph group_layers["Model and loss"]
  node_module["Module management<br/>[module.py]"]
  node_parameter["Trainable parameters<br/>[parameter.py]"]
  node_linear["Linear layer<br/>[linear.py]"]
  node_activations["Activations<br/>[activations.py]"]
  node_loss["Loss functions<br/>[loss.py]"]
end

subgraph group_training["Optimization"]
  node_optim["Optimizers<br/>[optim.py]"]
end

subgraph group_data["Data generation"]
  node_generators["Synthetic generators<br/>[data_generator.py]"]
end

node_user(("Framework user"))

node_user -->|"requests data"| node_generators
node_generators -->|"returns samples"| node_user
node_user -->|"creates tensors"| node_tensor
node_user -->|"builds model"| node_module
node_user -->|"computes loss"| node_loss
node_user -->|"steps optimizer"| node_optim
node_tensor -->|"dispatches operations"| node_function
node_function -->|"saves intermediates"| node_context
node_function -->|"runs operation"| node_ops
node_tensor -->|"backpropagates gradients"| node_function
node_module -->|"registers parameters"| node_parameter
node_linear -->|"multiplies and adds"| node_tensor
node_linear -->|"uses weights"| node_parameter
node_activations -->|"applies activation"| node_function
node_loss -->|"applies loss operation"| node_function
node_optim -->|"updates parameters"| node_parameter

click node_generators "https://github.com/vohongquann/neurokit/blob/main/neurokit/data_generator.py"
click node_tensor "https://github.com/vohongquann/neurokit/blob/main/neurokit/tensor.py"
click node_function "https://github.com/vohongquann/neurokit/blob/main/neurokit/function.py"
click node_ops "https://github.com/vohongquann/neurokit/blob/main/neurokit/ops.py"
click node_context "https://github.com/vohongquann/neurokit/blob/main/neurokit/context.py"
click node_module "https://github.com/vohongquann/neurokit/blob/main/neurokit/nn/module.py"
click node_parameter "https://github.com/vohongquann/neurokit/blob/main/neurokit/nn/parameter.py"
click node_linear "https://github.com/vohongquann/neurokit/blob/main/neurokit/nn/linear.py"
click node_activations "https://github.com/vohongquann/neurokit/blob/main/neurokit/nn/activations.py"
click node_loss "https://github.com/vohongquann/neurokit/blob/main/neurokit/nn/loss.py"
click node_optim "https://github.com/vohongquann/neurokit/blob/main/neurokit/optim.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_tensor,node_function,node_ops,node_context,node_user toneBlue
class node_module,node_parameter,node_linear,node_activations,node_loss toneAmber
class node_optim toneMint
class node_generators toneRose
```

## Components

### Autograd core

- [Tensor and backward](https://github.com/vohongquann/neurokit/blob/main/neurokit/tensor.py): `neurokit/tensor.py`
- [Function dispatch](https://github.com/vohongquann/neurokit/blob/main/neurokit/function.py): `neurokit/function.py`
- [Tensor operations](https://github.com/vohongquann/neurokit/blob/main/neurokit/ops.py): `neurokit/ops.py`
- [Saved context](https://github.com/vohongquann/neurokit/blob/main/neurokit/context.py): `neurokit/context.py`

### Model and loss

- [Module management](https://github.com/vohongquann/neurokit/blob/main/neurokit/nn/module.py): `neurokit/nn/module.py`
- [Trainable parameters](https://github.com/vohongquann/neurokit/blob/main/neurokit/nn/parameter.py): `neurokit/nn/parameter.py`
- [Linear layer](https://github.com/vohongquann/neurokit/blob/main/neurokit/nn/linear.py): `neurokit/nn/linear.py`
- [Activations](https://github.com/vohongquann/neurokit/blob/main/neurokit/nn/activations.py): `neurokit/nn/activations.py`
- [Loss functions](https://github.com/vohongquann/neurokit/blob/main/neurokit/nn/loss.py): `neurokit/nn/loss.py`

### Optimization

- [Optimizers](https://github.com/vohongquann/neurokit/blob/main/neurokit/optim.py): `neurokit/optim.py`

### Data generation

- [Synthetic generators](https://github.com/vohongquann/neurokit/blob/main/neurokit/data_generator.py): `neurokit/data_generator.py`

### Other components

- **Framework user**

## Connections

- Framework user → Synthetic generators: requests data
- Synthetic generators → Framework user: returns samples
- Framework user → Tensor and backward: creates tensors
- Framework user → Module management: builds model
- Framework user → Loss functions: computes loss
- Framework user → Optimizers: steps optimizer
- Tensor and backward → Function dispatch: dispatches operations
- Function dispatch → Saved context: saves intermediates
- Function dispatch → Tensor operations: runs operation
- Tensor and backward → Function dispatch: backpropagates gradients
- Module management → Trainable parameters: registers parameters
- Linear layer → Tensor and backward: multiplies and adds
- Linear layer → Trainable parameters: uses weights
- Activations → Function dispatch: applies activation
- Loss functions → Function dispatch: applies loss operation
- Optimizers → Trainable parameters: updates parameters
