# teytra/teytrnn architecture

> Architecture diagram of the GitHub repository teytra/teytrnn, 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/teytra/teytrnn
- Repository: https://github.com/teytra/teytrnn

## Overview

TeytrNN is a from-scratch C++ neural-network library with dense and convolutional network APIs. The principal workflow is to load or construct data, configure a network, train or predict, then evaluate or save/load model parameters. Its documented capabilities include CSV/TXT datasets and batching, CNN and dense layers, activation and loss choices, optimizers, and a custom matrix engine. Wiring reflects the supplied implementation excerpts and README; some subsystem internals were not sampled.

Main entry points: [`src/CNNNetwork.cpp`](https://github.com/teytra/teytrnn/blob/main/src/CNNNetwork.cpp) (CNN orchestration), [`src/NeuralNetwork.cpp`](https://github.com/teytra/teytrnn/blob/main/src/NeuralNetwork.cpp) (Dense training and evaluation), [`include/Dataset.h`](https://github.com/teytra/teytrnn/blob/main/include/Dataset.h) (Dataset), [`include/NeuralNetwork.h`](https://github.com/teytra/teytrnn/blob/main/include/NeuralNetwork.h) (Dense network)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Data handling"]
  node_dataset["Dataset<br/>[Dataset.h]"]
  node_dataset_impl["Dataset loading<br/>[Dataset.cpp]"]
end

subgraph group_networks["Network workflows"]
  node_nn["Dense network<br/>[NeuralNetwork.h]"]
  node_nn_impl["Dense training and evaluation<br/>[NeuralNetwork.cpp]"]
  node_cnn["CNN network<br/>[CNNNetwork.h]"]
  node_cnn_impl["CNN orchestration<br/>[CNNNetwork.cpp]"]
end

subgraph group_components["Layer components"]
  node_layer["Dense layer<br/>[Layer.h]"]
  node_layer_impl["Layer computation<br/>[Layer.cpp]"]
  node_conv["Convolution<br/>[Conv2D.h]"]
  node_conv_impl["Convolution computation<br/>[Conv2D.cpp]"]
  node_pool["Pooling<br/>[MaxPool.h]"]
  node_pool2d["2D pooling<br/>[MaxPool2D.h]"]
  node_flatten["Flatten<br/>[Flatten.h]"]
end

subgraph group_math["Math and optimization"]
  node_activation["Activation functions<br/>[ActivationUtils.h]"]
  node_loss["Loss functions<br/>[Loss.h]"]
  node_optimizer["Optimizer interface<br/>[Optimizer.h]"]
  node_sgd["SGD optimizer<br/>[SGDOptimizer.cpp]"]
  node_adam["Adam optimizer<br/>[AdamOptimizer.cpp]"]
  node_matrix["Matrix engine<br/>[Matrix.h]"]
end

node_user(("Library user"))
node_source_data["Dataset files"]
node_model_file["Model file"]

node_user -->|"loads data"| node_dataset
node_dataset -->|"uses loading"| node_dataset_impl
node_dataset_impl -->|"reads"| node_source_data
node_dataset -->|"provides batches"| node_user
node_user -->|"configures and trains"| node_nn
node_nn -->|"implements"| node_nn_impl
node_nn_impl -->|"reads samples"| node_dataset
node_nn_impl -->|"forwards and backpropagates"| node_layer
node_nn_impl -->|"calculates loss"| node_loss
node_user -->|"configures and predicts"| node_cnn
node_cnn -->|"implements"| node_cnn_impl
node_cnn_impl -->|"dispatches convolution"| node_conv
node_cnn_impl -->|"dispatches pooling"| node_pool
node_cnn_impl -->|"flattens features"| node_flatten
node_cnn_impl -->|"dispatches dense network"| node_nn
node_layer_impl -->|"applies activation"| node_activation
node_layer_impl -->|"updates parameters"| node_optimizer
node_sgd -->|"implements"| node_optimizer
node_adam -->|"implements"| node_optimizer
node_cnn_impl -->|"runs forward and backward"| node_conv_impl
node_conv_impl -->|"uses operations"| node_matrix
node_layer_impl -->|"uses operations"| node_matrix
node_dataset_impl -->|"creates samples"| node_matrix
node_nn_impl -->|"saves and loads"| node_model_file
node_cnn_impl -->|"delegates model persistence"| node_nn
node_pool2d -->|"uses operations"| node_matrix

click node_dataset "https://github.com/teytra/teytrnn/blob/main/include/Dataset.h"
click node_dataset_impl "https://github.com/teytra/teytrnn/blob/main/src/Dataset.cpp"
click node_nn "https://github.com/teytra/teytrnn/blob/main/include/NeuralNetwork.h"
click node_nn_impl "https://github.com/teytra/teytrnn/blob/main/src/NeuralNetwork.cpp"
click node_cnn "https://github.com/teytra/teytrnn/blob/main/include/CNNNetwork.h"
click node_cnn_impl "https://github.com/teytra/teytrnn/blob/main/src/CNNNetwork.cpp"
click node_layer "https://github.com/teytra/teytrnn/blob/main/include/Layer.h"
click node_layer_impl "https://github.com/teytra/teytrnn/blob/main/src/Layer.cpp"
click node_conv "https://github.com/teytra/teytrnn/blob/main/include/Conv2D.h"
click node_conv_impl "https://github.com/teytra/teytrnn/blob/main/src/Conv2D.cpp"
click node_pool "https://github.com/teytra/teytrnn/blob/main/include/MaxPool.h"
click node_pool2d "https://github.com/teytra/teytrnn/blob/main/include/MaxPool2D.h"
click node_flatten "https://github.com/teytra/teytrnn/blob/main/include/Flatten.h"
click node_activation "https://github.com/teytra/teytrnn/blob/main/include/ActivationUtils.h"
click node_loss "https://github.com/teytra/teytrnn/blob/main/include/Loss.h"
click node_optimizer "https://github.com/teytra/teytrnn/blob/main/include/Optimizer.h"
click node_sgd "https://github.com/teytra/teytrnn/blob/main/src/SGDOptimizer.cpp"
click node_adam "https://github.com/teytra/teytrnn/blob/main/src/AdamOptimizer.cpp"
click node_matrix "https://github.com/teytra/teytrnn/blob/main/include/Matrix.h"

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_dataset,node_dataset_impl,node_user toneBlue
class node_nn,node_nn_impl,node_cnn,node_cnn_impl toneAmber
class node_layer,node_layer_impl,node_conv,node_conv_impl,node_pool,node_pool2d,node_flatten toneMint
class node_activation,node_loss,node_optimizer,node_sgd,node_adam,node_matrix toneRose
class node_source_data,node_model_file toneIndigo
```

## Components

### Data handling

- [Dataset](https://github.com/teytra/teytrnn/blob/main/include/Dataset.h): `include/Dataset.h`
- [Dataset loading](https://github.com/teytra/teytrnn/blob/main/src/Dataset.cpp): `src/Dataset.cpp`

### Network workflows

- [Dense network](https://github.com/teytra/teytrnn/blob/main/include/NeuralNetwork.h): `include/NeuralNetwork.h`
- [Dense training and evaluation](https://github.com/teytra/teytrnn/blob/main/src/NeuralNetwork.cpp): `src/NeuralNetwork.cpp`
- [CNN network](https://github.com/teytra/teytrnn/blob/main/include/CNNNetwork.h): `include/CNNNetwork.h`
- [CNN orchestration](https://github.com/teytra/teytrnn/blob/main/src/CNNNetwork.cpp): `src/CNNNetwork.cpp`

### Layer components

- [Dense layer](https://github.com/teytra/teytrnn/blob/main/include/Layer.h): `include/Layer.h`
- [Layer computation](https://github.com/teytra/teytrnn/blob/main/src/Layer.cpp): `src/Layer.cpp`
- [Convolution](https://github.com/teytra/teytrnn/blob/main/include/Conv2D.h): `include/Conv2D.h`
- [Convolution computation](https://github.com/teytra/teytrnn/blob/main/src/Conv2D.cpp): `src/Conv2D.cpp`
- [Pooling](https://github.com/teytra/teytrnn/blob/main/include/MaxPool.h): `include/MaxPool.h`
- [2D pooling](https://github.com/teytra/teytrnn/blob/main/include/MaxPool2D.h): `include/MaxPool2D.h`
- [Flatten](https://github.com/teytra/teytrnn/blob/main/include/Flatten.h): `include/Flatten.h`

### Math and optimization

- [Activation functions](https://github.com/teytra/teytrnn/blob/main/include/ActivationUtils.h): `include/ActivationUtils.h`
- [Loss functions](https://github.com/teytra/teytrnn/blob/main/include/Loss.h): `include/Loss.h`
- [Optimizer interface](https://github.com/teytra/teytrnn/blob/main/include/Optimizer.h): `include/Optimizer.h`
- [SGD optimizer](https://github.com/teytra/teytrnn/blob/main/src/SGDOptimizer.cpp): `src/SGDOptimizer.cpp`
- [Adam optimizer](https://github.com/teytra/teytrnn/blob/main/src/AdamOptimizer.cpp): `src/AdamOptimizer.cpp`
- [Matrix engine](https://github.com/teytra/teytrnn/blob/main/include/Matrix.h): `include/Matrix.h`

### Other components

- **Library user**
- **Dataset files**
- **Model file**

## Connections

- Library user → Dataset: loads data
- Dataset → Dataset loading: uses loading
- Dataset loading → Dataset files: reads
- Dataset → Library user: provides batches
- Library user → Dense network: configures and trains
- Dense network → Dense training and evaluation: implements
- Dense training and evaluation → Dataset: reads samples
- Dense training and evaluation → Dense layer: forwards and backpropagates
- Dense training and evaluation → Loss functions: calculates loss
- Library user → CNN network: configures and predicts
- CNN network → CNN orchestration: implements
- CNN orchestration → Convolution: dispatches convolution
- CNN orchestration → Pooling: dispatches pooling
- CNN orchestration → Flatten: flattens features
- CNN orchestration → Dense network: dispatches dense network
- Layer computation → Activation functions: applies activation
- Layer computation → Optimizer interface: updates parameters
- SGD optimizer → Optimizer interface: implements
- Adam optimizer → Optimizer interface: implements
- CNN orchestration → Convolution computation: runs forward and backward
- Convolution computation → Matrix engine: uses operations
- Layer computation → Matrix engine: uses operations
- Dataset loading → Matrix engine: creates samples
- Dense training and evaluation → Model file: saves and loads
- CNN orchestration → Dense network: delegates model persistence
- 2D pooling → Matrix engine: uses operations
