Skip to main content

MATLAB-inspired AI toolbox core neural networks in Python (MLP, CNN, RNN)

Project description

MATLAB AI Toolbox (Python Port - Core)

Tests

This package is a lightweight, FULLY VIBE-CODED, MATLAB-inspired Python module that implements core neural network workflows for:

  • MLP (classification + regression)
  • CNN (image classification + regression)
  • RNN (sequence classification + regression, with RNN / GRU / LSTM cells)

It is designed as a practical starting point, not a full reimplementation of MATLAB Deep Learning Toolbox.

Install

pip install ai-toolbox-py

For development:

pip install -e .

Quick Start

import numpy as np
from ai_toolbox import MLPClassifier

X = np.random.randn(200, 10).astype("float32")
y = (X[:, 0] + X[:, 1] > 0).astype("int64")

model = MLPClassifier(hidden_layers=(64, 32), epochs=5)
model.fit(X, y)
pred = model.predict(X[:5])
print(pred)
print(model.evaluate(X, y))

CNN Example

import numpy as np
from ai_toolbox import CNNClassifier

X = np.random.randn(128, 1, 28, 28).astype("float32")
y = np.random.randint(0, 10, size=128)

cnn = CNNClassifier(conv_channels=(16, 32), epochs=2)
cnn.fit(X, y)
print(cnn.predict(X[:4]))

RNN Example

import numpy as np
from ai_toolbox import RNNClassifier

X = np.random.randn(100, 20, 8).astype("float32")  # (batch, time, features)
y = np.random.randint(0, 3, size=100)

rnn = RNNClassifier(hidden_size=32, rnn_type="gru", epochs=3)
rnn.fit(X, y)
print(rnn.evaluate(X, y))

MLP Regression Example

import numpy as np
from ai_toolbox import MLPRegressor

X = np.random.randn(200, 10).astype("float32")
y = (1.5 * X[:, 0] - 0.7 * X[:, 1]).astype("float32")

reg = MLPRegressor(hidden_layers=(64, 32), epochs=5)
reg.fit(X, y)
pred = reg.predict(X[:5])
print(pred)
print(reg.evaluate(X, y))  # loss, mse, mae

CNN Regression Example

import numpy as np
from ai_toolbox import CNNRegressor

X = np.random.randn(64, 1, 28, 28).astype("float32")
y = X.mean(axis=(1, 2, 3)).astype("float32")

cnn_reg = CNNRegressor(conv_channels=(16, 32), epochs=2)
cnn_reg.fit(X, y)
print(cnn_reg.predict(X[:4]))

RNN Regression Example

import numpy as np
from ai_toolbox import RNNRegressor

X = np.random.randn(100, 20, 8).astype("float32")
y = (0.3 * X[:, -1, 0] - 0.2 * X[:, :, 1].mean(axis=1)).astype("float32")

rnn_reg = RNNRegressor(hidden_size=32, rnn_type="lstm", epochs=3)
rnn_reg.fit(X, y)
print(rnn_reg.evaluate(X, y))  # loss, mse, mae

Variable-Length Sequence Example (LSTM / GRU / RNN)

Pad sequences to a common length and pass valid lengths via lengths=....

import numpy as np
from ai_toolbox import RNNClassifier, pad_sequences

# Example raw variable-length sequences:
seqs = [np.random.randn(np.random.randint(5, 31), 8).astype("float32") for _ in range(64)]
X_padded, lengths = pad_sequences(seqs, value=0.0)
y = np.random.randint(0, 2, size=64)

model = RNNClassifier(rnn_type="lstm", hidden_size=32, aggregate="mean", epochs=3)
model.fit(X_padded, y, lengths=lengths)

pred = model.predict(X_padded[:4], lengths=lengths[:4])
metrics = model.evaluate(X_padded, y, lengths=lengths)
print(pred, metrics)

# Validation with lengths:
# model.fit(X_train, y_train, lengths=train_lengths, val_data=(X_val, y_val, val_lengths))

PyTorch DataLoader Collate Helper

from torch.utils.data import DataLoader
from ai_toolbox import sequence_collate_fn

# dataset items are (sequence, target), where sequence has shape (T, F)
loader = DataLoader(dataset, batch_size=32, shuffle=True, collate_fn=sequence_collate_fn)

for x_padded, y, lengths in loader:
    pass

Resume Training From Checkpoint

model.fit(X_train, y_train, checkpoint_path="artifacts/best_model.pt")

# Continue training later (restores weights + optimizer state + history if present)
model.fit(
    X_train,
    y_train,
    resume_from_checkpoint="artifacts/best_model.pt",
    checkpoint_path="artifacts/best_model.pt",
)

Scheduler, Callbacks, and Weighting

import numpy as np
from ai_toolbox import Callback, MLPClassifier

class StopAtEpoch2(Callback):
    def on_epoch_end(self, epoch, logs=None):
        if epoch >= 2:
            self.stop_training = True

X = np.random.randn(128, 10).astype("float32")
y = (X[:, 0] > 0).astype("int64")
sample_weight = np.where(y == 1, 2.0, 1.0).astype("float32")

model = MLPClassifier(epochs=10)
model.fit(
    X,
    y,
    class_weight={0: 1.0, 1: 1.5},
    sample_weight=sample_weight,
    scheduler="step",                     # or "plateau", "cosine", "exponential"
    scheduler_kwargs={"step_size": 1, "gamma": 0.9},
    callbacks=[StopAtEpoch2()],
)

MATLAB Mapping (Approximate)

  • MATLAB patternnet / feedforwardnet -> MLPClassifier
  • MATLAB fitnet -> MLPRegressor
  • MATLAB trainNetwork + conv layers -> CNNClassifier
  • MATLAB trainNetwork + regression head -> CNNRegressor
  • MATLAB sequence models (rnnLayer, lstmLayer, gruLayer) -> RNNClassifier
  • MATLAB sequence models + regression head -> RNNRegressor

Scope

Implemented core functionality:

  • training (fit)
  • early stopping + best-checkpoint saving during fit (early_stopping, checkpoint_path)
  • prediction (predict, predict_proba)
  • evaluation (evaluate)
  • saving/loading weights (save, load)
  • regression variants (MLPRegressor, CNNRegressor, RNNRegressor)
  • variable-length sequence support for RNNClassifier / RNNRegressor via lengths=...
  • utilities: pad_sequences(...), sequence_collate_fn(...)
  • richer metrics: classification (precision, recall, f1) and regression (rmse, r2)
  • checkpoint resume support during fit (resume_from_checkpoint=...)
  • scheduler support during fit (scheduler=..., scheduler_kwargs=...)
  • callback API (Callback, CallbackList) with epoch hooks and callback-driven stop
  • weighting support in fit: classifier class_weight + sample_weight, regressor sample_weight

Not included (yet):

  • full MATLAB layer graph equivalents
  • advanced callbacks/schedulers
  • data augmentation pipelines

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ai_toolbox_py-1.0.1.tar.gz (23.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ai_toolbox_py-1.0.1-py3-none-any.whl (19.2 kB view details)

Uploaded Python 3

File details

Details for the file ai_toolbox_py-1.0.1.tar.gz.

File metadata

  • Download URL: ai_toolbox_py-1.0.1.tar.gz
  • Upload date:
  • Size: 23.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for ai_toolbox_py-1.0.1.tar.gz
Algorithm Hash digest
SHA256 9ab14ed72645e8d3aefada82d998995b454e2c840c5c09bac55e7b9c94b40232
MD5 188699627baea841b3285d86f3fe75a6
BLAKE2b-256 18f490df167e9d504a11889413057b51afc6e3847f1305cbeb73f6e19c10ec24

See more details on using hashes here.

File details

Details for the file ai_toolbox_py-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: ai_toolbox_py-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 19.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for ai_toolbox_py-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b4e1cc78663f296054339a9b8c9748cf0feced230b2e5e807831e9b83da89321
MD5 1b8cfb0380aa6a4b3464e51086a8d804
BLAKE2b-256 434d533103def6982acd319214d3e5216536c33bbfb056fc449be848814c128d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page