Skip to main content

A minimal scalar-valued autograd engine written in Rust

Project description

PyPI version info PyPI supported Python versions

Key Features

  • Forward and Backward pass on scalar values
  • Backpropagation with a computation graph
  • Activation Functions:
    • Sigmoid
    • ReLU
    • Softmax
  • Loss Criterion:
    • Cross Entropy

Installing

# using pip
pip install oxigrad

# using uv
uv add oxigrad

Note: Python 3.9 or higher is required

Quick Examples

Simple Neuron

from oxigrad import Value, Activation

x1 = Value(1.7, label="x1")
x2 = Value(-0.3, label="x2")

w1 = Value(-1.5, label="w1")
w2 = Value(0.1, label="w2")

b = Value(0.5, label="b")

# Set a label after an operation
x1w1 = (x1 * w1).set_label("x1w1")
x2w2 = x2 * w2

xwb = x1w1 + x2w2 + b

z = Activation.Sigmoid(xwb).set_label("z")

# Run backpropagation
z.backward()

print(z)    # Value(data=0.8889, grad=1.0000, label='z', operation='SIGMOID')
print(w1)   # Value(data=-1.5000, grad=0.1678, label='w1')
print(w2)   # Value(data=0.1000, grad=-0.0296, label='w2')
print(b)    # Value(data=0.5000, grad=0.0987, label='b')

Cross Entropy Loss

from oxigrad import Activation, Loss, Value

a = Value(1.63, label="logit_0")
b = Value(0.27, label="logit_1")

c = Value(1, label="target_0")
d = Value(0, label="target_1")

logits = [a, b]
targets = [c, d]

# Convert logits into probability scores (does not add to computation graph)
probability_scores = Activation.Softmax(logits)
print(probability_scores)       # [0.7957596977159083, 0.20424030228409182]
print(sum(probability_scores))  # 1.0

# Has build in softmax
loss = Loss.CrossEntropy(logits, targets).set_label("loss")
loss.backward()

print(loss) # Value(data=0.2285, grad=1.0000, label='loss', operation='CROSSENTROPY')
print(a)    # Value(data=1.6300, grad=-0.2042, label='logit_0')
print(b)    # Value(data=0.2700, grad=0.2042, label='logit_1')
print(c)    # Value(data=1.0000, grad=0.2285, label='target_0')
print(d)    # Value(data=0.0000, grad=1.5885, label='target_1')

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

oxigrad-0.3.1.tar.gz (14.4 kB view details)

Uploaded Source

Built Distribution

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

oxigrad-0.3.1-cp39-abi3-win_amd64.whl (162.8 kB view details)

Uploaded CPython 3.9+Windows x86-64

File details

Details for the file oxigrad-0.3.1.tar.gz.

File metadata

  • Download URL: oxigrad-0.3.1.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.9.0

File hashes

Hashes for oxigrad-0.3.1.tar.gz
Algorithm Hash digest
SHA256 230aa85570e361a76e35a87fe3e67018d888eb3e2c2e8b78611a9d873de1674d
MD5 f6037c588d7e39be2ef475e85ad1f045
BLAKE2b-256 cf62f06d4433c4868f59d931fe99b471627528964f6c4c27a8b9b2664b2cae13

See more details on using hashes here.

File details

Details for the file oxigrad-0.3.1-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: oxigrad-0.3.1-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 162.8 kB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.9.0

File hashes

Hashes for oxigrad-0.3.1-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 d174a22dfccfa40a7fc78f846342db5a8b91933cf075fb07181f19cb283e9796
MD5 ac42fa02e45781a49ab80d49851273a1
BLAKE2b-256 ae6b468ce9d4d277467f685ed42324d885eb6970ff497ea4556101606e214c57

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