Deep learning framework built from scratch with numpy!
Project description
Phito-Deep
Phito-Deep is a deep learning framework built from scratch with only numpy. This is being actively developed as part of my learning journey to becoming a machine learning engineer. I'm using it to better understand the underlying algorithms that power modern deep learning frameworks and architectures.
Installation
$ pip install phitodeep
Usage
MNIST quickstart:
import numpy as np
from datasets import load_dataset
from phitodeep.model import SequentialBuilder
from phitodeep.loss import CategoricalCrossEntropy
from phitodeep.optimization.optimizers import Adam
from phitodeep.optimization.initialization import Xavier, InitType
train_dataset = load_dataset("ylecun/mnist", split="train")
test_dataset = load_dataset("ylecun/mnist", split="test")
X_train = train_dataset["image"]
y_train = train_dataset["label"]
X_test = test_dataset["image"]
y_test = test_dataset["label"]
X_train = np.array(X_train).astype(np.float32) / 255.0
y_train = np.array(y_train)
X_test = np.array(X_test).astype(np.float32) / 255.0
y_test = np.array(y_test)
print(X_train.shape, y_train.shape)
model = (
SequentialBuilder()
.flatten()
.dense(784, 128)
.relu()
.dense(128, 64, Xavier(InitType.NORMAL))
.relu()
.dense(64, 10, Xavier(InitType.NORMAL))
.softmax()
.optimizer(Adam())
.loss(CategoricalCrossEntropy())
.alpha(0.05)
.epochs(5)
.batch(64)
.build()
)
model.summary()
model.train(X_train, y_train, X_test, y_test)
Contributing
Interested in contributing? Check out the contributing guidelines. Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.
License
phitodeep was created by Ralph Dugue. It is licensed under the terms of the Apache License 2.0 license.
Credits
phitodeep was created with cookiecutter and the py-pkgs-cookiecutter template.
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
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 phitodeep-0.2.0.tar.gz.
File metadata
- Download URL: phitodeep-0.2.0.tar.gz
- Upload date:
- Size: 6.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.13 {"installer":{"name":"uv","version":"0.11.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1985f1bfd53d29cd1f4439908a7150f08d5f384452cd0e786a52953abc223de
|
|
| MD5 |
a985477a1dcd78d8688b5cb87d946892
|
|
| BLAKE2b-256 |
b7b6688e9de7294d724329aa1dc342273f1b3728f2f6d2882b9839c1e402480e
|
File details
Details for the file phitodeep-0.2.0-py3-none-any.whl.
File metadata
- Download URL: phitodeep-0.2.0-py3-none-any.whl
- Upload date:
- Size: 10.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.13 {"installer":{"name":"uv","version":"0.11.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d91be86e497cd1c22b4afd33bab9b9dc04bbde2e0aa49b2a9f3b10ebb4b3f7a0
|
|
| MD5 |
d2e8ef08f1d20302ef0cc6c94ffeafb5
|
|
| BLAKE2b-256 |
a9c8c1c7aa6e1ea224d2a712d944fc607205cf1ac05cab4f3952c39a78ac1563
|