🏠 Home ⚡ Features 📚 API Reference 💡 Examples 📦 Installation 📋 Changelog
📋 Release History

Changelog

All notable changes to LowMind across every release. Format based on Keep a Changelog.

Added Changed Fixed
2.1
v2.1.0
Latest
📅 May 27, 2026
Added
no_grad / enable_grad context managers

Disable autograd during inference. Works as context manager and decorator. Computed tensors inside no_grad skip graph building entirely.

LSTM & GRU layers

Single-cell + multi-step, multi-layer, dropout support. Includes a full test suite of 13 RNN/no_grad tests.

Weight Initialization module

xavier_uniform_, xavier_normal_, kaiming_uniform_, kaiming_normal_, orthogonal_, normal_, uniform_, constant_, zeros_, ones_, eye_, init_module()

Parameter groups in all optimizers

SGD, Adam, AdamW, RMSprop, AdaGrad — all support list-of-dicts API for different LR/weight-decay per layer.

Gradient accumulation in Trainer

grad_accum_steps argument — simulate large batches on Pi with limited RAM.

ModelProfiler

Count parameters, estimate FLOPs/memory, measure throughput. Know the cost of your model before deploying to Pi.

Data Transforms

Compose, Normalize, RandomHorizontalFlip, RandomVerticalFlip, RandomCrop, CenterCrop, GaussianNoise, Cutout, ToTensor

LR Finder

LRFinder — auto-detect optimal learning rate using range test. Saves manual hyperparameter search time on Pi.

Optimizer state_dict / load_state_dict

Save and restore optimizer state alongside model weights for fully resumable training.

Trainer.predict_proba

Return softmax probabilities from the high-level Trainer (not just class indices).

3 new examples (11, 12, 13)

LSTM sequence, weight init comparison, production inference pipeline.

New test suites

Integration tests (10), RNN tests (13), weight init tests (14). pyproject.toml PEP 621 packaging config added.

Changed

All optimizers now support parameter groups (list of dicts API, same as PyTorch)

Trainer now uses no_grad during validation for memory efficiency

no_grad is integrated into Tensor.__init__ — computed tensors inside no_grad skip graph building entirely

clip_grad_norm moved to top-level lm.clip_grad_norm()

Fixed

set_lr / get_lr added to all optimizers (needed by LRFinder and ReduceLROnPlateau)

2.0
v2.0.0
📅 May 26, 2026
Added

Full professional package structure — core/, nn/, optim/, data/, utils/, models/

Adam, AdamW, RMSprop, AdaGrad optimizers added

7 LR Schedulers: StepLR, MultiStepLR, ExponentialLR, CosineAnnealingLR, ReduceLROnPlateau, LinearWarmupLR, CyclicLR

BatchNorm1d / BatchNorm2d with running stats and eval mode

MaxPool2d / AvgPool2d with stride and kernel

Conv2d im2col-based backward pass

Flatten, Dropout, Embedding layers

6 Loss functions: CrossEntropy, BCE, MSE, MAE, Huber, NLL

DataLoader with shuffling, batching, drop_last; TensorDataset, train_test_split

8 Metrics: accuracy, top-k accuracy, F1, precision, recall, confusion matrix, R², MSE/MAE

High-level Trainer with EarlyStopping, ModelCheckpoint, LRSchedulerCallback, History callbacks

SystemMonitor and memory_trace for Pi resource monitoring

MicroMLP, MicroCNN, TinyResNet pre-built models

Model save() / load() with gzip compression. 10 example scripts. 88 passing unit tests.

Fixed (from original lowmind.py)

Conv2d had no backward pass → full im2col gradient implemented

mean(axis=(2,3)) crashed with tuple axis → full tuple-axis support added

Tensor.__hash__ missing → set/dict usage failed → __hash__ = object.__hash__

Matmul backward 1-D vector case → was scalar instead of outer product → np.outer fix

zero_grad() used None assignment instead of .fill(0) → fixed

Memory manager name collision for same-named layers → removed from tracking

1.0
v1.0.0
📅 Original Release

Single-file lowmind.py by Dhaval Vedra. Basic Tensor, Linear, Conv2d, ReLU, MSE loss, SGD optimizer. The foundation that LowMind 2.x was built upon.