feat: packaging, project structure + updated README.md

This commit is contained in:
Lenoctambule
2026-04-08 18:58:32 +02:00
parent e9c79f463f
commit d048ddc6db
9 changed files with 62 additions and 18 deletions

2
.gitignore vendored
View File

@@ -3,3 +3,5 @@ __pycache__
*.npz
*.npy
.venv
dist
*.egg-info

View File

@@ -2,24 +2,33 @@
## Usage
1. Install requirements :
1. To install from source :
```sh
$ pip install -r requirements.txt
$ git clone git@github.com:lenoctambule/autoencoder.git
$ pip install -e autoencoder/
```
2. Optionally run mnist_test.py.
2. Optionally, run mnist_test.py to see it in action on the MNIST dataset.
```sh
$ cd examples
$ py mnist_test.py
```
## Training
Instatiate an `Autoencoder` object :
Instatiate an `ClassicalAutoencoder` or `VariationalAutoencoder` object :
```py
from autoencoder import Autoencoder
from activations import LeakyReLU
from easyvae.autoencoder import ClassicalAutoencoder, VariationalAutoencoder
from easyvae.activations import LeakyReLU
autoencoder = Autoencoder(
autoencoder = ClassicalAutoencoder(
[768, 64, 16],
[16, 64, 768],
0.01,
LeakyReLU()
)
# or
autoencoder = VariationalAutoencoder(
[768, 64, 16],
[16, 64, 768],
0.01,
@@ -30,11 +39,17 @@ And then via the `train_dataset` method to train over a dataset :
```py
autoencoder.train_dataset(data)
```
Or via the `train` to input each data points iteratively :
Or via the `train` method to input each data points iteratively :
```py
autoencoder.train(v)
```
After training, you can save your model via the `save` method and load that model using `load` method :
```
autoencoder.save("mymodel.npy)
autoencoder.load("mymodel.npy")
```
## Inference
Use your `Autoencoder` object with the `encode`, `decode`, `forward` methods like so :

View File

@@ -2,10 +2,12 @@ import matplotlib.pyplot as plt
import numpy as np
import os
import signal
from autoencoder import (VariationalAutoencoder, # noqa
ClassicalAutoencoder,
AAutoencoder)
from activations import LeakyReLU
from easyvae.autoencoder import ( # noqa
VariationalAutoencoder,
ClassicalAutoencoder,
AAutoencoder
)
from easyvae.activations import LeakyReLU
def load_mnist() -> list[np.ndarray]:

23
pyproject.toml Normal file
View File

@@ -0,0 +1,23 @@
[project]
name = "easyvae"
version = "1.0"
authors = [
{ name="Ravaka RALAMBOARIVONY", email="ravaka.rlb.pro@gmail.com" },
]
description = "Python implementation of a Classical and Variational Autoencoders "
readme = "README.md"
requires-python = ">=3.10"
classifiers = [
"Programming Language :: Python :: 3",
"Operating System :: OS Independent",
]
license = "MIT"
license-files = ["LICEN[CS]E*"]
[project.urls]
Homepage = "https://github.com/lenoctambule/autoencoder"
Issues = "https://github.com/lenoctambule/autoencoder/issues"
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"

0
src/easyvae/__init__.py Normal file
View File

View File

@@ -1,10 +1,12 @@
import numpy as np
from utils import (dynamic_loss_plot_init,
dynamic_loss_plot_update,
dynamic_loss_plot_finish)
from .utils import (
dynamic_loss_plot_init,
dynamic_loss_plot_update,
dynamic_loss_plot_finish
)
from tqdm import tqdm
from layers import DeepNNLayer, SampleLayer
from activations import ActivationFunc, Identity
from .layers import DeepNNLayer, SampleLayer
from .activations import ActivationFunc, Identity
from abc import ABC, abstractmethod
LOADER = ['', '', '', '', '', '', '', '']

View File

@@ -1,5 +1,5 @@
import numpy as np
from activations import ActivationFunc, Identity
from .activations import ActivationFunc, Identity
class NNLayer: