Skip to main content

A Keras-like neural network library with an autograd engine operating on a dynamically built DAG of scalar values

Project description

KaiTorch

logo

KaiTorch is a deep learning library that dynamically builds a neural network as a decentralized acyclic graph (DAG) of Scalar values and implements backprop using reverse-mode autodiff. Heavily over-commented, highly impractical, but hopefully educational.

It implements a Keras-like API that allows you to build models using a Sequential class with Dense and Dropout layers, with implementations of several commonly used weight initializers, activation functions, optimizers, and loss functions.

This project was inspired by and is an extension of Andrej Karpathy's micrograd :)


Installation

pip install kaitorch

Tutorial Notebooks

  1. Functions and Gradients
    • Jupyter Notebook // Google Colab
    • keywords: functions, derivatives, gradients
  2. Functions as a Feed Forward Neural Net
    • Jupyter Notebook // Google Colab
    • keywords: directed acyclic graph, operator overloading, magic methods, recursion
  3. Reverse-mode Autodiff and Backpropogation
    • Jupyter Notebook // Google Colab
    • keywords: chain rule, reverse-mode autodiff, topological sort, backprop
  4. Activation Functions
    • Jupyter Notebook // Google Colab
    • keywords: sigmoid, tanh, ReLU, LeakyReLU, ELU, swish
  5. Multi-layer Perceptron and Weight Initialization
    • Jupyter Notebook // Google Colab
    • keywords: dense layer, multi-layer perceptron, weight initialization, sequential class
  6. Loss Functions
    • Jupyter Notebook // Google Colab
    • keywords: mean squared error, binary crossentropy, categorical crossentropy
  7. Gradient Descent and Optimizers (*personal favorite)
    • Jupyter Notebook // Google Colab
    • keywords: gradient descent, learning rate, momentum, adagrad, rmsprop, adam
  8. Inverted Dropout
    • Jupyter Notebook // Google Colab
    • keywords: dropout layer, inverted dropout, regularization

Example Notebooks

  1. Regression
    • Jupyter Notebook // Google Colab
  2. Binary Classification
    • Jupyter Notebook // Google Colab
  3. Multi-class Classification
    • Jupyter Notebook // Google Colab

Keras-esque API

Building a Neural Net

from kaitorch.models import Sequential
from kaitorch.layers import Dense, Dropout
from kaitorch.losses import CategoricalCrossentropy
from kaitorch.optimizers import Adam
from kaitorch.activations import LeakyReLU
from kaitorch.initializers import LecunNormal

model = Sequential()

model.add(Dense(12, activation='sigmoid', initializer='he_normal'))
model.add(Dropout(0.25))
model.add(Dense(12, activation=LeakyReLU(alpha=0.01), initializer=LecunNormal()))
model.add(Dense(3, activation='softmax'))

model.compile(
    optimizer=Adam(lr=0.025),
    loss=CategoricalCrossentropy()
)

Training a Neural Net

history = model.fit(X_train, y_train, epochs=32)

y_pred = model.predict(X_test)

Tracing/Visualization

model.plot_model(filename='trace')

logo

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

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

kaitorch-0.1.0-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file kaitorch-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: kaitorch-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.7

File hashes

Hashes for kaitorch-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 30162157a60146153be0352fbe6ce6f3a133f6a20ecd0c4a2cfb6c0869cab026
MD5 7f06476305adb8d924c17f8e8c6bdc64
BLAKE2b-256 672fc8c695b3c6462d0fc519d12569e01a7cc2cb5ab130810cb800e061712448

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