Skip to main content

A tiny Catalyst-like experiment runner framework on top of micrograd.

Project description

Kittylyst

kitty

A tiny Catalyst-like experiment runner framework on top of micrograd.

Implements Experiment, Runner and Callback Catalyst-core abstractions and has extra PyTorch-like micrograd modules - MicroLoader, MicroCriterion, MicroOptimizer and MicroScheduler.

Every module is tiny, with about 100 lines of code (even this readme). However, this is enough to make Kittylyst easily extendable for any number of data sources and support multi-stage experiments, as the demo notebook shows.

Potentially useful for educational purposes.

Installation

pip install kittylyst

Example usage

from micrograd.nn import MLP
import kittylyst as kt

loaders = {"train": kt.MicroLoader(...), "valid": kt.MicroLoader(...)}
model = MLP(2, [16, 16, 1])
criterion = kt.MicroCriterion()
optimizer = kt.MicroOptimizer(model)
scheduler = kt.MicroScheduler(optimizer, num_epochs=10)
experiment = kt.Experiment(
    model=model,
    criterion=criterion,
    optimizer=optimizer,
    scheduler=scheduler,
    loaders=loaders,
    num_epochs=10,
    callbacks=[
        kt.CriterionCallback(),
        kt.AccuracyCallback(),
        kt.OptimizerCallback(),
        kt.SchedulerCallback(),
        kt.LoggerCallback(),
    ],
    verbose=True,
)

kt.SupervisedRunner().run_experiment(experiment)

Running an experiment

The notebook demo.ipynb provides a full demo of running an Experiment with SupervisedRunner for binary classification task. This is achieved by training MLP from micrograd module with a simple svm "max-margin" binary classification loss (MicroCriterion) and SGD (MicroOptimizer) with learning rate decay (MicroScheduler).

As shown in the notebook, using a 2-layer neural net with two 16-node hidden layers we achieve the following decision boundary on the moon dataset:

2d neuron

Running codestyle

To run the codestyle check you will have to install catalyst-codestyle. Then simply:

catalyst-make-codestyle

License

MIT

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

kittylyst-0.1.0.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

kittylyst-0.1.0-py2.py3-none-any.whl (7.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file kittylyst-0.1.0.tar.gz.

File metadata

  • Download URL: kittylyst-0.1.0.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.4.0.post20200518 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.7

File hashes

Hashes for kittylyst-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8bb978ff84c032b287fc1f9a825a9ad47cf1ac1a8100513270d85122537b3120
MD5 7fd584efe7eef33516ee3c71e8002db2
BLAKE2b-256 76d797327091d5aad8afd15cef901adcc6fe9dbf16b32b859a39e0169ab54928

See more details on using hashes here.

File details

Details for the file kittylyst-0.1.0-py2.py3-none-any.whl.

File metadata

  • Download URL: kittylyst-0.1.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 7.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.4.0.post20200518 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.7

File hashes

Hashes for kittylyst-0.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 bdf1230fd2a3e5a02c4cc60acb0a88a3a80feb5bf18e532da221fc87e3b5b5cb
MD5 71026c87b5bf884d14d245e68a6a0d46
BLAKE2b-256 81977723e798e4147333aa9184fa764ac9923e4830b78e5430856d7573ca3534

See more details on using hashes here.

Supported by

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