Multi-Layer Perceptrons with multi-Fourier encoding, variable learning rate, visualization and PyTorch compilation
Project description
NeuralNetworks Module
Module complet pour la création et l'entraînement de MultiLayer Perceptrons (MLP)
avec encodage optionnel Fourier Features et gestion automatique des pertes.
Classes
MLP
Cette classe fournit :
- Un MLP entièrement configurable (dimensions, activation).
- Option d'encodage Fourier Features sur les entrées.
| Paramètres | Type | Optionnel | Description |
|---|---|---|---|
input_size |
int |
Oui | Taille des données en entrée au réseau. Default: 1 |
output_size |
int |
Oui | Taille des données en sortie au réseau. Default: 1 |
hidden_layers |
list[int] |
Oui | Dimensions successives des couches intermédiaires du réseau. Default: [1] |
sigmas |
list[float] |
Oui | Liste de sigma pour encodages RFF. Si None : passthrough. Default: None |
fourier_input_size |
int |
Oui | WIP. Default: 2 |
nb_fourier |
int |
Oui | Nombre de fréquences utilisées pour les Fourier Features. Default: 8 |
norm |
norm |
Oui | Type de normalisation / activation pour les couches cachées. Default: 'Relu' |
name |
str |
Oui | Nom du réseau pour identification ou affichage. Default: 'Net' |
| Attributs | Type | Description |
|---|---|---|
MLP.losses |
list[float] |
Historique des pertes cumulées lors de l'entraînement |
MLP.learnings |
list[float] |
Historique des taux d'apprentissage utilisées lors de l'entraînement |
MLP.model |
nn.Sequential |
MLP complet construit dynamiquement |
MLP.name |
str |
Nom du réseau |
Trainer
Classe pour entraîner des réseaux avec mini-batchs et Automatic Mixed Precision.
| Paramètres | Type | Optionnel | Description |
|---|---|---|---|
*nets |
MLP |
Non | Réseaux pour lesquels le trainer va entrainer. |
inputs |
numpy.array(list[float]) |
Non | Données en entrée au réseau. |
outputs |
numpy.array(list[float]) |
Non | Données en sortie au réseau. |
test_size |
float |
Oui | Proportion des données à utiliser pendant l'entrainement. Si None : utilise toutes les données. Default: None |
optim |
optim |
Oui | Nom de l’optimiseur à utiliser (doit exister dans optims()). Default: 'Adam' |
init_lr |
float |
Oui | Taux d’apprentissage initial pour l’optimiseur. Default: 1e-3 |
crit |
crit |
Oui | Fonction de perte à utiliser (doit exister dans crits()). Default: MSE' |
batch_size |
int |
Oui | Taille des minibatchs. Default: 1024 |
Trainer.train
Lancement d'un entrainement avec le trainer définit.
| Paramètres | Type | Optionnel | Description |
|---|---|---|---|
num_epochs |
int |
Oui | Nombres d'itérations à effectuer. |
activate_tqdm |
boolean |
Oui | Utilisation d'une barre de progression. |
Méthodes
losses
Affiche les résidus en fonction des époques d'entrainement des réseaux.
learnings
Affiche les taux d'apprentissage en fonction des époques d'entrainement des réseaux.
Dictionnaires
norms
| Valeurs | Module PyTorch | Description |
|---|---|---|
'ReLU' |
nn.ReLU() |
Fonction d'activation ReLU classique (Rectified Linear Unit). |
'LeakyReLU' |
nn.LeakyReLU() |
ReLU avec un petit coefficient pour les valeurs négatives (paramètre negative_slope). |
'ELU' |
nn.ELU() |
Fonction d'activation ELU (Exponential Linear Unit), qui a une meilleure gestion des valeurs négatives. |
'SELU' |
nn.SELU() |
SELU (Scaled Exponential Linear Unit), une version améliorée de l'ELU pour des réseaux auto-normalisants. |
'GELU' |
nn.GELU() |
GELU (Gaussian Error Linear Unit), une activation probabiliste basée sur une fonction gaussienne. |
'Mish' |
nn.Mish() |
ReLU différentiable en tout points avec passage négatif. |
'Softplus' |
nn.Softplus() |
Fonction d'activation qui approxime ReLU mais de manière lissée. |
'Sigmoid' |
nn.Sigmoid() |
Fonction d'activation Sigmoid, qui produit une sortie entre 0 et 1. |
'Tanh' |
nn.Tanh() |
Fonction d'activation Tanh, avec une sortie dans l'intervalle [-1, 1]. |
'Hardtanh' |
nn.Hardtanh() |
Variante de Tanh, avec des sorties limitées entre une plage spécifiée. |
'Softsign' |
nn.Softsign() |
Fonction d'activation similaire à Tanh mais plus souple, avec des valeurs dans [-1, 1]. |
optims
| Valeurs | Module PyTorch | Description |
|---|---|---|
'Adadelta' |
optim.Adadelta() |
Optimiseur basé sur les gradients adaptatifs, sans nécessité de réglage du taux d'apprentissage. |
'Adafactor' |
optim.Adafactor() |
Optimiseur variant d'Adam avec une mise à jour plus efficace de la mémoire pour de grands modèles. |
'Adam' |
optim.Adam() |
Optimiseur utilisant un gradient stochastique adaptatif avec des moyennes mobiles des gradients. |
'AdamW' |
optim.AdamW() |
Optimiseur avec une régularisation L2 (weight decay) distincte. |
'Adamax' |
optim.Adamax() |
Optimiseur utilisant une norme infinie pour les gradients, plus stable pour certaines configurations. |
'ASGD' |
optim.ASGD() |
Optimiseur utilisé pour de grandes données avec une moyenne des gradients. |
'NAdam' |
optim.NAdam() |
Optimiseur avec une adaptation des moments de second ordre. |
'RAdam' |
optim.RAdam() |
Optimiseur qui ajuste dynamiquement les moments pour stabiliser l'entraînement. |
'RMSprop' |
optim.RMSprop() |
Optimiseur utilisant une moyenne mobile des carrés des gradients pour réduire les oscillations. |
'Rprop' |
optim.Rprop() |
Optimiseur basé sur les mises à jour des poids indépendantes des gradients. |
'SGD' |
optim.SGD() |
Optimiseur souvent utilisée avec un taux d'apprentissage constant ou ajusté. |
crits
| Valeurs | Module PyTorch | Description |
|---|---|---|
'MSE' |
nn.MSELoss |
Perte utilisée pour les régressions. |
'L1' |
nn.L1Loss() |
Perte utilisée pour la régularisation. |
'SmoothL1' |
nn.SmoothL1Loss() |
Perte moins sensible aux outliers. |
'Huber' |
nn.HuberLoss() |
Perte moins affectée par les grands écarts. |
'CrossEntropy' |
nn.CrossEntropyLoss() |
Perte utilisée pour les problèmes de classification multi-classes. |
'KLDiv' |
nn.KLDivLoss() |
Perte utilisée pour des modèles probabilistes. |
'PoissonNLL' |
nn.PoissonNLLLoss() |
Perte utilisée pour la modélisation de comptages. |
'MultiLabelSoftMargin' |
nn.MultiLabelSoftMarginLoss() |
Perte utilisée pour les problèmes de classification multi-étiquettes. |
device
Variable principale d'allocation des performances.
Apple Silicon (macOS)
- Si le système d'exploitation est macOS (nommé
darwindansplatform.system()), la fonction vérifie si l'accélérateur Metal Performance Shaders (MPS) est disponible sur l'appareil.- Si MPS est disponible (
torch.backends.mps.is_available()), l'appareil cible sera défini sur'mps'(c'est un équivalent de CUDA pour les appareils Apple Silicon).
- Si MPS est disponible (
Windows
- Si le système d'exploitation est Windows, la fonction vérifie d'abord si CUDA (NVIDIA) est disponible avec
torch.cuda.is_available(). Si c'est le cas, le périphérique sera défini sur CUDA.
Linux
- Si le système d'exploitation est Linux, plusieurs vérifications sont effectuées :
- CUDA (NVIDIA) : Si
torch.cuda.is_available()renvoieTrue, le périphérique sera défini sur'cuda'. - ROCm (AMD) : Si le système supporte ROCm via
torch.backends.hip.is_available(), l'appareil sera défini sur'cuda'(ROCm est utilisé pour les cartes AMD dans le cadre de l'API CUDA). - Intel oneAPI / XPU : Si le système prend en charge Intel oneAPI ou XPU via
torch.xpu.is_available(), le périphérique sera défini sur XPU.
- CUDA (NVIDIA) : Si
Système non reconnu
- Si aucune des conditions ci-dessus n'est remplie, la fonction retourne
'cpu'comme périphérique par défaut.
Project details
Release history Release notifications | RSS feed
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 neuralnetworks-0.2.5.tar.gz.
File metadata
- Download URL: neuralnetworks-0.2.5.tar.gz
- Upload date:
- Size: 29.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55771894f7336941e285d24dc66de1d197c1d17d00dd137e2a3103d930f09626
|
|
| MD5 |
4b2e4f25fe80a59de0993e03ce78599f
|
|
| BLAKE2b-256 |
b1b838944c5c8b3eccf96fb02dd610f701f80def942bbd3f292b35a7a4dc1d8e
|
File details
Details for the file neuralnetworks-0.2.5-py3-none-any.whl.
File metadata
- Download URL: neuralnetworks-0.2.5-py3-none-any.whl
- Upload date:
- Size: 31.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
303d6f0a45e06a18233b3540198f644390c1451138ad2311f9cd2eed3c782bd3
|
|
| MD5 |
dc8e8d7a32a6a5ab47b3bbf293a8893d
|
|
| BLAKE2b-256 |
44829e9a2f7ee68135fa72f3f9e7d4862190743891747182cc6dedf0d9285159
|