A minimal scalar-valued autograd engine written in Rust
Project description
Key Features
- Forward and Backward pass on scalar values
- Backpropagation with a computation graph
- Activation Functions:
- Sigmoid
- ReLU
- Softmax
- Loss Criterion:
- MSE
- 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.2.tar.gz
(16.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file oxigrad-0.3.2.tar.gz.
File metadata
- Download URL: oxigrad-0.3.2.tar.gz
- Upload date:
- Size: 16.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.9.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2aa1b7b3607b9472b8464f9bcefb2876a4fa1893264db1480eb167bf8f8ec387
|
|
| MD5 |
d1465860298a4b31bf858e7a67027b24
|
|
| BLAKE2b-256 |
3d037f9554241601d54d17f7bc78631b58633da1c68da6bdb1a8b429f5edfa44
|
File details
Details for the file oxigrad-0.3.2-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: oxigrad-0.3.2-cp39-abi3-win_amd64.whl
- Upload date:
- Size: 163.8 kB
- Tags: CPython 3.9+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.9.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a51697ee8614b28416a48eab2b0fc8f4ba8b59e932f0e954a6cd5ad2ebd65bf
|
|
| MD5 |
0d557c413824bbad5adcaea795de6d45
|
|
| BLAKE2b-256 |
cf890b4670113780000755c6253ed9378c5060407014d1919686dc12bd6db18e
|