Metadata-Version: 2.4
Name: mini-torch-from-scratch
Version: 0.1.0
Summary: A small neural network and automatic differentiation framework
License-Expression: MIT
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# Mini Torch from Scratch

Un petit framework Python, sans dependance externe, pour l'autodiff scalaire et
les reseaux fully connected (MLP). Il ne fournit pas encore de couches CNN.

## Installation

```powershell
python -m pip install mini-torch-from-scratch
```

Le nom du paquet sur PyPI est `mini-torch-from-scratch`. Le nom d'import Python
reste `mini_torch`.

## Exemple

```python
from mini_torch import Couche, MLP, Neuron, Nombre

reseau = MLP(
    [
        Couche([Neuron([0.5, -0.2], 0.1)]),
        Couche([Neuron([0.8], 0.0)]),
    ]
)

sortie = reseau.propager([2.0, 1.0])[0]
perte = (sortie - 1.0) ** 2
perte.backward()

for parametre in reseau.parameters():
    parametre.h_val -= 0.01 * parametre.b_val
```

`Nombre.backward()` calcule les gradients et les accumule sur les feuilles du
graphe. Remets les gradients des parametres a zero avant une nouvelle etape
d'optimisation si tu ne veux pas les accumuler.

Pour voir un exemple d'entrainement complet depuis le depot :

```powershell
python -m examples.entrainement
```

## Tests

Depuis la racine du depot :

```powershell
python -m unittest discover -s tests
```

## Construire et publier sur PyPI

La publication n'est pas automatique. Pour publier toi-meme :

1. Remplace le titulaire fictif dans `LICENSE` par ton nom ou celui de ton
   organisation, puis cree un compte PyPI et verifie que le nom
   `mini-torch-from-scratch` est toujours disponible. Sa disponibilite peut
   changer.
2. Depuis la racine du depot, construis et verifies les distributions :

   ```powershell
   python -m pip install --upgrade build twine
   python -m build
   python -m twine check dist/*
   ```

3. Configure tes identifiants PyPI selon la documentation officielle de Twine,
   puis envoie les distributions :

   ```powershell
   python -m twine upload dist/*
   ```

Ne place pas de jeton PyPI dans le code source ni dans le depot. Augmente la
version dans `pyproject.toml` avant chaque nouvelle publication.
