NeuralNetworks 0.2.3__tar.gz → 0.2.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/PKG-INFO +62 -41
  2. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/README.md +61 -40
  3. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks/MLP/__init__.py +1 -1
  4. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks/__init__.py +1 -1
  5. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks.egg-info/PKG-INFO +62 -41
  6. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/LICENSE +0 -0
  7. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/pyproject.toml +0 -0
  8. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/setup.cfg +0 -0
  9. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks/Dependances/__init__.py +0 -0
  10. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks/Dependances/matplot.py +0 -0
  11. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks/Dependances/pytorch.py +0 -0
  12. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks/MLP/FourierFeatures.py +0 -0
  13. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks/MLP/Layers.py +0 -0
  14. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks/MLP/inference.py +0 -0
  15. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks/Trainer/__init__.py +0 -0
  16. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks/Trainer/dynamic_learning_rate.py +0 -0
  17. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks/Trainer/sample_data.py +0 -0
  18. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks/Trainer/train.py +0 -0
  19. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks/UI/Learnings.py +0 -0
  20. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks/UI/Losses.py +0 -0
  21. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks/UI/__init__.py +0 -0
  22. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks.egg-info/SOURCES.txt +0 -0
  23. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks.egg-info/dependency_links.txt +0 -0
  24. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks.egg-info/requires.txt +0 -0
  25. {neuralnetworks-0.2.3 → neuralnetworks-0.2.4}/src/NeuralNetworks.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: NeuralNetworks
3
- Version: 0.2.3
3
+ Version: 0.2.4
4
4
  Summary: Multi-Layer Perceptrons with multi-Fourier encoding, variable learning rate, visualization and PyTorch compilation
5
5
  Author-email: Alexandre Brun <alexandre51160@gmail.com>
6
6
  License: GPL-3.0-or-later
@@ -35,11 +35,9 @@ avec encodage optionnel [Fourier Features](https://en.wikipedia.org/wiki/Random_
35
35
 
36
36
  ---
37
37
 
38
- ## Contenu principal
38
+ ## **Classes**
39
39
 
40
- ### Classes
41
-
42
- #### `MLP` {#MLP}
40
+ ### **MLP**
43
41
 
44
42
  Cette classe fournit :
45
43
 
@@ -48,7 +46,7 @@ Cette classe fournit :
48
46
 
49
47
  ---
50
48
 
51
- ##### Paramètres
49
+ #### **Paramètres**
52
50
 
53
51
  | **Paramètres** | **Type** | **Optionnel** | **Description** |
54
52
  |----------------------|--------------------------------------------------------------------------------------------------|---------------|--------------------------------------------------------------------------------|
@@ -58,38 +56,45 @@ Cette classe fournit :
58
56
  | `sigmas` | [`list[float]`](https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range) | Oui | Liste de sigma pour encodages RFF. Si None : passthrough. Default: `None` |
59
57
  | `fourier_input_size` | [`int`](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex) | Oui | WIP. Default: `2` |
60
58
  | `nb_fourier` | [`int`](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex) | Oui | Nombre de fréquences utilisées pour les Fourier Features. Default: `8` |
61
- | `norm` | [`norm`](#norms) | Oui | Type de normalisation / activation pour les couches cachées. Default: `'Relu'` |
59
+ | `norm` | [`norm`](#norms-norms) | Oui | Type de normalisation / activation pour les couches cachées. Default: `'Relu'` |
62
60
  | `name` | [`str`](https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str) | Oui | Nom du réseau pour identification ou affichage. Default: `'Net'` |
63
61
 
64
- ##### Attributs
62
+ #### **Attributs**
65
63
 
66
- - `losses : list[float]` — Historique des pertes cumulées lors de l'entraînement
64
+ - `losses : list[float]` — Historique des pertes cumulées lors de l'entraînement
67
65
  - `learnings : list[float]` — Historique des taux d'apprentissage utilisées lors de l'entraînement
68
- - `model : nn.Sequential` — MLP complet construit dynamiquement
69
- - `name : str` — Nom du réseau
66
+ - `model : nn.Sequential` — MLP complet construit dynamiquement
67
+ - `name : str` — Nom du réseau
68
+
69
+ | **Attributs** | **Type** | **Description** |
70
+ |---------------|--------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------|
71
+ | `losses` | [`list[float]`](https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range) | Historique des pertes cumulées lors de l'entraînement |
72
+ | `learnings` | [`list[float]`](https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range) | Historique des taux d'apprentissage utilisées lors de l'entraînement |
73
+ | `model` | [`nn.Sequential`](https://docs.pytorch.org/docs/stable/generated/torch.nn.Sequential.html) | MLP complet construit dynamiquement |
74
+ | `name` | [`str`](https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str) | Nom du réseau |
70
75
 
71
76
  ---
72
77
 
73
- #### `Trainer`
78
+ ### **Trainer**
74
79
 
75
80
  Cette classe fournit :
76
81
 
77
82
  - Méthode pour entraîner des réseaux avec mini-batchs et [Automatic Mixed Precision](https://docs.pytorch.org/tutorials/recipes/recipes/amp_recipe.html)
78
83
 
79
- ##### Paramètres
84
+ #### **Paramètres**
80
85
 
81
86
  | **Paramètres** | **Type** | **Optionnel** | **Description** |
82
87
  |----------------|-------------------------------------------------------------------------------------------------|---------------|-----------------------------------------------------------------------------------------------------------------|
83
- | `*nets` | [`MLP`](#MLP) | Non | Réseaux pour lesquels le trainer va entrainer. |
88
+ | `*nets` | [`MLP`](#mlp-mlp) | Non | Réseaux pour lesquels le trainer va entrainer. |
84
89
  | `inputs` | [`numpy.array(list[float])`](https://numpy.org/doc/stable/reference/generated/numpy.array.html) | Non | Données en entrée au réseau. |
85
90
  | `outputs` | [`numpy.array(list[float])`](https://numpy.org/doc/stable/reference/generated/numpy.array.html) | Non | Données en sortie au réseau. |
86
91
  | `test_size` | [`float`](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex) | Oui | Proportion des données à utiliser pendant l'entrainement. Si None : utilise toutes les données. Default: `None` |
87
- | `optim` | [`optim`](#optims) | Oui | Nom de l’optimiseur à utiliser (doit exister dans `optims()`). Default: `'Adam'` |
92
+ | `optim` | [`optim`](#optims-optims) | Oui | Nom de l’optimiseur à utiliser (doit exister dans `optims()`). Default: `'Adam'` |
88
93
  | `init_lr` | [`float`](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex) | Oui | Taux d’apprentissage initial pour l’optimiseur. Default: `1e-3` |
89
- | `crit` | [`crit`](#crits) | Oui | Fonction de perte à utiliser (doit exister dans `crits()`). Default: `MSE'` |
94
+ | `crit` | [`crit`](#crits-crits) | Oui | Fonction de perte à utiliser (doit exister dans `crits()`). Default: `MSE'` |
90
95
  | `batch_size` | [`int`](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex) | Oui | Taille des minibatchs. Default: `1024` |
91
96
 
92
- ##### `Trainer.train`
97
+ #### **Trainer.train**
93
98
 
94
99
  Lancement d'un entrainement avec le trainer définit
95
100
 
@@ -100,9 +105,21 @@ Lancement d'un entrainement avec le trainer définit
100
105
 
101
106
  ---
102
107
 
103
- ### Dictionnaires
108
+ ## **Méthodes**
109
+
110
+ ### **losses**
111
+
112
+ Affiche les résidus en fonction des époques d'entrainement des réseaux.
113
+
114
+ ### **learnings**
115
+
116
+ Affiche les taux d'apprentissage en fonction des époques d'entrainement des réseaux.
117
+
118
+ ---
119
+
120
+ ## **Dictionnaires**
104
121
 
105
- #### `norms()` {#norms}
122
+ ### **norms**
106
123
 
107
124
  | **Valeurs** | **Module PyTorch** | **Description** |
108
125
  |---------------|--------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------|
@@ -118,20 +135,9 @@ Lancement d'un entrainement avec le trainer définit
118
135
  | `'Hardtanh'` | [`nn.Hardtanh()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.Hardtanh.html) | Variante de Tanh, avec des sorties limitées entre une plage spécifiée. |
119
136
  | `'Softsign'` | [`nn.Softsign()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.Softsign.html) | Fonction d'activation similaire à Tanh mais plus souple, avec des valeurs dans [-1, 1]. |
120
137
 
121
- #### `crits()` {#crits}
122
-
123
- | **Valeurs** | **Module PyTorch** | **Description** |
124
- |--------------------------|--------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------|
125
- | `'MSE'` | [`nn.MSELoss`](https://pytorch.org/docs/stable/generated/torch.nn.MSELoss.html) | Perte utilisée pour les régressions. |
126
- | `'L1'` | [`nn.L1Loss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.L1Loss.html) | Perte utilisée pour la régularisation. |
127
- | `'SmoothL1'` | [`nn.SmoothL1Loss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.SmoothL1Loss.html) | Perte moins sensible aux outliers. |
128
- | `'Huber'` | [`nn.HuberLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.HuberLoss.html) | Perte moins affectée par les grands écarts. |
129
- | `'CrossEntropy'` | [`nn.CrossEntropyLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html) | Perte utilisée pour les problèmes de classification multi-classes. |
130
- | `'KLDiv'` | [`nn.KLDivLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.KLDivLoss.html) | Perte utilisée pour des modèles probabilistes. |
131
- | `'PoissonNLL'` | [`nn.PoissonNLLLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.PoissonNLLLoss.html) | Perte utilisée pour la modélisation de comptages. |
132
- | `'MultiLabelSoftMargin'` | [`nn.MultiLabelSoftMarginLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.MultiLabelSoftMarginLoss.html) | Perte utilisée pour les problèmes de classification multi-étiquettes. |
138
+ ---
133
139
 
134
- #### `optims()` {#optims}
140
+ ### **optims**
135
141
 
136
142
  | **Valeurs** | **Module PyTorch** | **Description** |
137
143
  |---------------|--------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------|
@@ -146,27 +152,42 @@ Lancement d'un entrainement avec le trainer définit
146
152
  | `'RMSprop'` | [`optim.RMSprop()`](https://docs.pytorch.org/docs/stable/generated/torch.optim.RMSprop.html) | Optimiseur utilisant une moyenne mobile des carrés des gradients pour réduire les oscillations. |
147
153
  | `'Rprop'` | [`optim.Rprop()`](https://docs.pytorch.org/docs/stable/generated/torch.optim.Rprop.html) | Optimiseur basé sur les mises à jour des poids indépendantes des gradients. |
148
154
  | `'SGD'` | [`optim.SGD()`](https://docs.pytorch.org/docs/stable/generated/torch.optim.SGD.html) | Optimiseur souvent utilisée avec un taux d'apprentissage constant ou ajusté. |
155
+
156
+ ---
157
+
158
+ ### **crits**
159
+
160
+ | **Valeurs** | **Module PyTorch** | **Description** |
161
+ |--------------------------|--------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------|
162
+ | `'MSE'` | [`nn.MSELoss`](https://pytorch.org/docs/stable/generated/torch.nn.MSELoss.html) | Perte utilisée pour les régressions. |
163
+ | `'L1'` | [`nn.L1Loss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.L1Loss.html) | Perte utilisée pour la régularisation. |
164
+ | `'SmoothL1'` | [`nn.SmoothL1Loss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.SmoothL1Loss.html) | Perte moins sensible aux outliers. |
165
+ | `'Huber'` | [`nn.HuberLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.HuberLoss.html) | Perte moins affectée par les grands écarts. |
166
+ | `'CrossEntropy'` | [`nn.CrossEntropyLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html) | Perte utilisée pour les problèmes de classification multi-classes. |
167
+ | `'KLDiv'` | [`nn.KLDivLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.KLDivLoss.html) | Perte utilisée pour des modèles probabilistes. |
168
+ | `'PoissonNLL'` | [`nn.PoissonNLLLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.PoissonNLLLoss.html) | Perte utilisée pour la modélisation de comptages. |
169
+ | `'MultiLabelSoftMargin'` | [`nn.MultiLabelSoftMarginLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.MultiLabelSoftMarginLoss.html) | Perte utilisée pour les problèmes de classification multi-étiquettes. |
149
170
 
150
171
  ---
151
172
 
152
- ### `device`
173
+ ## **device**
153
174
 
154
175
  variable principale d'allocation des performances
155
176
 
156
- #### **Apple Silicon (macOS)**
177
+ ### **Apple Silicon (macOS)**
157
178
  - Si le système d'exploitation est macOS (nommé `darwin` dans `platform.system()`), la fonction vérifie si l'accélérateur **Metal Performance Shaders** (MPS) est disponible sur l'appareil.
158
- - 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).
179
+ - 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).
159
180
 
160
- #### **Windows**
181
+ ### **Windows**
161
182
  - 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**.
162
183
 
163
- #### **Linux**
184
+ ### **Linux**
164
185
  - Si le système d'exploitation est Linux, plusieurs vérifications sont effectuées :
165
- 1. **CUDA** (NVIDIA) : Si `torch.cuda.is_available()` renvoie `True`, le périphérique sera défini sur `'CUDA'`.
166
- 2. **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).
186
+ 1. **CUDA** (NVIDIA) : Si `torch.cuda.is_available()` renvoie `True`, le périphérique sera défini sur `'cuda'`.
187
+ 2. **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).
167
188
  3. **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**.
168
189
 
169
- #### **Système non reconnu**
170
- - Si aucune des conditions ci-dessus n'est remplie, la fonction retourne `'CPU'` comme périphérique par défaut.
190
+ ### **Système non reconnu**
191
+ - Si aucune des conditions ci-dessus n'est remplie, la fonction retourne `'cpu'` comme périphérique par défaut.
171
192
 
172
193
  ---
@@ -5,11 +5,9 @@ avec encodage optionnel [Fourier Features](https://en.wikipedia.org/wiki/Random_
5
5
 
6
6
  ---
7
7
 
8
- ## Contenu principal
8
+ ## **Classes**
9
9
 
10
- ### Classes
11
-
12
- #### `MLP` {#MLP}
10
+ ### **MLP**
13
11
 
14
12
  Cette classe fournit :
15
13
 
@@ -18,7 +16,7 @@ Cette classe fournit :
18
16
 
19
17
  ---
20
18
 
21
- ##### Paramètres
19
+ #### **Paramètres**
22
20
 
23
21
  | **Paramètres** | **Type** | **Optionnel** | **Description** |
24
22
  |----------------------|--------------------------------------------------------------------------------------------------|---------------|--------------------------------------------------------------------------------|
@@ -28,38 +26,45 @@ Cette classe fournit :
28
26
  | `sigmas` | [`list[float]`](https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range) | Oui | Liste de sigma pour encodages RFF. Si None : passthrough. Default: `None` |
29
27
  | `fourier_input_size` | [`int`](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex) | Oui | WIP. Default: `2` |
30
28
  | `nb_fourier` | [`int`](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex) | Oui | Nombre de fréquences utilisées pour les Fourier Features. Default: `8` |
31
- | `norm` | [`norm`](#norms) | Oui | Type de normalisation / activation pour les couches cachées. Default: `'Relu'` |
29
+ | `norm` | [`norm`](#norms-norms) | Oui | Type de normalisation / activation pour les couches cachées. Default: `'Relu'` |
32
30
  | `name` | [`str`](https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str) | Oui | Nom du réseau pour identification ou affichage. Default: `'Net'` |
33
31
 
34
- ##### Attributs
32
+ #### **Attributs**
35
33
 
36
- - `losses : list[float]` — Historique des pertes cumulées lors de l'entraînement
34
+ - `losses : list[float]` — Historique des pertes cumulées lors de l'entraînement
37
35
  - `learnings : list[float]` — Historique des taux d'apprentissage utilisées lors de l'entraînement
38
- - `model : nn.Sequential` — MLP complet construit dynamiquement
39
- - `name : str` — Nom du réseau
36
+ - `model : nn.Sequential` — MLP complet construit dynamiquement
37
+ - `name : str` — Nom du réseau
38
+
39
+ | **Attributs** | **Type** | **Description** |
40
+ |---------------|--------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------|
41
+ | `losses` | [`list[float]`](https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range) | Historique des pertes cumulées lors de l'entraînement |
42
+ | `learnings` | [`list[float]`](https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range) | Historique des taux d'apprentissage utilisées lors de l'entraînement |
43
+ | `model` | [`nn.Sequential`](https://docs.pytorch.org/docs/stable/generated/torch.nn.Sequential.html) | MLP complet construit dynamiquement |
44
+ | `name` | [`str`](https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str) | Nom du réseau |
40
45
 
41
46
  ---
42
47
 
43
- #### `Trainer`
48
+ ### **Trainer**
44
49
 
45
50
  Cette classe fournit :
46
51
 
47
52
  - Méthode pour entraîner des réseaux avec mini-batchs et [Automatic Mixed Precision](https://docs.pytorch.org/tutorials/recipes/recipes/amp_recipe.html)
48
53
 
49
- ##### Paramètres
54
+ #### **Paramètres**
50
55
 
51
56
  | **Paramètres** | **Type** | **Optionnel** | **Description** |
52
57
  |----------------|-------------------------------------------------------------------------------------------------|---------------|-----------------------------------------------------------------------------------------------------------------|
53
- | `*nets` | [`MLP`](#MLP) | Non | Réseaux pour lesquels le trainer va entrainer. |
58
+ | `*nets` | [`MLP`](#mlp-mlp) | Non | Réseaux pour lesquels le trainer va entrainer. |
54
59
  | `inputs` | [`numpy.array(list[float])`](https://numpy.org/doc/stable/reference/generated/numpy.array.html) | Non | Données en entrée au réseau. |
55
60
  | `outputs` | [`numpy.array(list[float])`](https://numpy.org/doc/stable/reference/generated/numpy.array.html) | Non | Données en sortie au réseau. |
56
61
  | `test_size` | [`float`](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex) | Oui | Proportion des données à utiliser pendant l'entrainement. Si None : utilise toutes les données. Default: `None` |
57
- | `optim` | [`optim`](#optims) | Oui | Nom de l’optimiseur à utiliser (doit exister dans `optims()`). Default: `'Adam'` |
62
+ | `optim` | [`optim`](#optims-optims) | Oui | Nom de l’optimiseur à utiliser (doit exister dans `optims()`). Default: `'Adam'` |
58
63
  | `init_lr` | [`float`](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex) | Oui | Taux d’apprentissage initial pour l’optimiseur. Default: `1e-3` |
59
- | `crit` | [`crit`](#crits) | Oui | Fonction de perte à utiliser (doit exister dans `crits()`). Default: `MSE'` |
64
+ | `crit` | [`crit`](#crits-crits) | Oui | Fonction de perte à utiliser (doit exister dans `crits()`). Default: `MSE'` |
60
65
  | `batch_size` | [`int`](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex) | Oui | Taille des minibatchs. Default: `1024` |
61
66
 
62
- ##### `Trainer.train`
67
+ #### **Trainer.train**
63
68
 
64
69
  Lancement d'un entrainement avec le trainer définit
65
70
 
@@ -70,9 +75,21 @@ Lancement d'un entrainement avec le trainer définit
70
75
 
71
76
  ---
72
77
 
73
- ### Dictionnaires
78
+ ## **Méthodes**
79
+
80
+ ### **losses**
81
+
82
+ Affiche les résidus en fonction des époques d'entrainement des réseaux.
83
+
84
+ ### **learnings**
85
+
86
+ Affiche les taux d'apprentissage en fonction des époques d'entrainement des réseaux.
87
+
88
+ ---
89
+
90
+ ## **Dictionnaires**
74
91
 
75
- #### `norms()` {#norms}
92
+ ### **norms**
76
93
 
77
94
  | **Valeurs** | **Module PyTorch** | **Description** |
78
95
  |---------------|--------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------|
@@ -88,20 +105,9 @@ Lancement d'un entrainement avec le trainer définit
88
105
  | `'Hardtanh'` | [`nn.Hardtanh()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.Hardtanh.html) | Variante de Tanh, avec des sorties limitées entre une plage spécifiée. |
89
106
  | `'Softsign'` | [`nn.Softsign()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.Softsign.html) | Fonction d'activation similaire à Tanh mais plus souple, avec des valeurs dans [-1, 1]. |
90
107
 
91
- #### `crits()` {#crits}
92
-
93
- | **Valeurs** | **Module PyTorch** | **Description** |
94
- |--------------------------|--------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------|
95
- | `'MSE'` | [`nn.MSELoss`](https://pytorch.org/docs/stable/generated/torch.nn.MSELoss.html) | Perte utilisée pour les régressions. |
96
- | `'L1'` | [`nn.L1Loss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.L1Loss.html) | Perte utilisée pour la régularisation. |
97
- | `'SmoothL1'` | [`nn.SmoothL1Loss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.SmoothL1Loss.html) | Perte moins sensible aux outliers. |
98
- | `'Huber'` | [`nn.HuberLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.HuberLoss.html) | Perte moins affectée par les grands écarts. |
99
- | `'CrossEntropy'` | [`nn.CrossEntropyLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html) | Perte utilisée pour les problèmes de classification multi-classes. |
100
- | `'KLDiv'` | [`nn.KLDivLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.KLDivLoss.html) | Perte utilisée pour des modèles probabilistes. |
101
- | `'PoissonNLL'` | [`nn.PoissonNLLLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.PoissonNLLLoss.html) | Perte utilisée pour la modélisation de comptages. |
102
- | `'MultiLabelSoftMargin'` | [`nn.MultiLabelSoftMarginLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.MultiLabelSoftMarginLoss.html) | Perte utilisée pour les problèmes de classification multi-étiquettes. |
108
+ ---
103
109
 
104
- #### `optims()` {#optims}
110
+ ### **optims**
105
111
 
106
112
  | **Valeurs** | **Module PyTorch** | **Description** |
107
113
  |---------------|--------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------|
@@ -116,27 +122,42 @@ Lancement d'un entrainement avec le trainer définit
116
122
  | `'RMSprop'` | [`optim.RMSprop()`](https://docs.pytorch.org/docs/stable/generated/torch.optim.RMSprop.html) | Optimiseur utilisant une moyenne mobile des carrés des gradients pour réduire les oscillations. |
117
123
  | `'Rprop'` | [`optim.Rprop()`](https://docs.pytorch.org/docs/stable/generated/torch.optim.Rprop.html) | Optimiseur basé sur les mises à jour des poids indépendantes des gradients. |
118
124
  | `'SGD'` | [`optim.SGD()`](https://docs.pytorch.org/docs/stable/generated/torch.optim.SGD.html) | Optimiseur souvent utilisée avec un taux d'apprentissage constant ou ajusté. |
125
+
126
+ ---
127
+
128
+ ### **crits**
129
+
130
+ | **Valeurs** | **Module PyTorch** | **Description** |
131
+ |--------------------------|--------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------|
132
+ | `'MSE'` | [`nn.MSELoss`](https://pytorch.org/docs/stable/generated/torch.nn.MSELoss.html) | Perte utilisée pour les régressions. |
133
+ | `'L1'` | [`nn.L1Loss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.L1Loss.html) | Perte utilisée pour la régularisation. |
134
+ | `'SmoothL1'` | [`nn.SmoothL1Loss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.SmoothL1Loss.html) | Perte moins sensible aux outliers. |
135
+ | `'Huber'` | [`nn.HuberLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.HuberLoss.html) | Perte moins affectée par les grands écarts. |
136
+ | `'CrossEntropy'` | [`nn.CrossEntropyLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html) | Perte utilisée pour les problèmes de classification multi-classes. |
137
+ | `'KLDiv'` | [`nn.KLDivLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.KLDivLoss.html) | Perte utilisée pour des modèles probabilistes. |
138
+ | `'PoissonNLL'` | [`nn.PoissonNLLLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.PoissonNLLLoss.html) | Perte utilisée pour la modélisation de comptages. |
139
+ | `'MultiLabelSoftMargin'` | [`nn.MultiLabelSoftMarginLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.MultiLabelSoftMarginLoss.html) | Perte utilisée pour les problèmes de classification multi-étiquettes. |
119
140
 
120
141
  ---
121
142
 
122
- ### `device`
143
+ ## **device**
123
144
 
124
145
  variable principale d'allocation des performances
125
146
 
126
- #### **Apple Silicon (macOS)**
147
+ ### **Apple Silicon (macOS)**
127
148
  - Si le système d'exploitation est macOS (nommé `darwin` dans `platform.system()`), la fonction vérifie si l'accélérateur **Metal Performance Shaders** (MPS) est disponible sur l'appareil.
128
- - 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).
149
+ - 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).
129
150
 
130
- #### **Windows**
151
+ ### **Windows**
131
152
  - 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**.
132
153
 
133
- #### **Linux**
154
+ ### **Linux**
134
155
  - Si le système d'exploitation est Linux, plusieurs vérifications sont effectuées :
135
- 1. **CUDA** (NVIDIA) : Si `torch.cuda.is_available()` renvoie `True`, le périphérique sera défini sur `'CUDA'`.
136
- 2. **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).
156
+ 1. **CUDA** (NVIDIA) : Si `torch.cuda.is_available()` renvoie `True`, le périphérique sera défini sur `'cuda'`.
157
+ 2. **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).
137
158
  3. **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**.
138
159
 
139
- #### **Système non reconnu**
140
- - Si aucune des conditions ci-dessus n'est remplie, la fonction retourne `'CPU'` comme périphérique par défaut.
160
+ ### **Système non reconnu**
161
+ - Si aucune des conditions ci-dessus n'est remplie, la fonction retourne `'cpu'` comme périphérique par défaut.
141
162
 
142
163
  ---
@@ -54,7 +54,7 @@ class MLP (nn.Module):
54
54
  # --- Activation ---
55
55
  self.norm = norm_list.get (norm)
56
56
  if self.norm is None:
57
- print (f"Warning: '{norm}' not recognized, falling back to 'm is'")
57
+ print (f"Warning: '{norm}' not recognized, falling back to 'Relu'")
58
58
  self.norm = norm_list.get ("Relu")
59
59
 
60
60
  # --- Attributs ---
@@ -15,4 +15,4 @@ from .Trainer import Trainer
15
15
 
16
16
  from .UI import *
17
17
 
18
- __version__ = "0.2.3"
18
+ __version__ = "0.2.4"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: NeuralNetworks
3
- Version: 0.2.3
3
+ Version: 0.2.4
4
4
  Summary: Multi-Layer Perceptrons with multi-Fourier encoding, variable learning rate, visualization and PyTorch compilation
5
5
  Author-email: Alexandre Brun <alexandre51160@gmail.com>
6
6
  License: GPL-3.0-or-later
@@ -35,11 +35,9 @@ avec encodage optionnel [Fourier Features](https://en.wikipedia.org/wiki/Random_
35
35
 
36
36
  ---
37
37
 
38
- ## Contenu principal
38
+ ## **Classes**
39
39
 
40
- ### Classes
41
-
42
- #### `MLP` {#MLP}
40
+ ### **MLP**
43
41
 
44
42
  Cette classe fournit :
45
43
 
@@ -48,7 +46,7 @@ Cette classe fournit :
48
46
 
49
47
  ---
50
48
 
51
- ##### Paramètres
49
+ #### **Paramètres**
52
50
 
53
51
  | **Paramètres** | **Type** | **Optionnel** | **Description** |
54
52
  |----------------------|--------------------------------------------------------------------------------------------------|---------------|--------------------------------------------------------------------------------|
@@ -58,38 +56,45 @@ Cette classe fournit :
58
56
  | `sigmas` | [`list[float]`](https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range) | Oui | Liste de sigma pour encodages RFF. Si None : passthrough. Default: `None` |
59
57
  | `fourier_input_size` | [`int`](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex) | Oui | WIP. Default: `2` |
60
58
  | `nb_fourier` | [`int`](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex) | Oui | Nombre de fréquences utilisées pour les Fourier Features. Default: `8` |
61
- | `norm` | [`norm`](#norms) | Oui | Type de normalisation / activation pour les couches cachées. Default: `'Relu'` |
59
+ | `norm` | [`norm`](#norms-norms) | Oui | Type de normalisation / activation pour les couches cachées. Default: `'Relu'` |
62
60
  | `name` | [`str`](https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str) | Oui | Nom du réseau pour identification ou affichage. Default: `'Net'` |
63
61
 
64
- ##### Attributs
62
+ #### **Attributs**
65
63
 
66
- - `losses : list[float]` — Historique des pertes cumulées lors de l'entraînement
64
+ - `losses : list[float]` — Historique des pertes cumulées lors de l'entraînement
67
65
  - `learnings : list[float]` — Historique des taux d'apprentissage utilisées lors de l'entraînement
68
- - `model : nn.Sequential` — MLP complet construit dynamiquement
69
- - `name : str` — Nom du réseau
66
+ - `model : nn.Sequential` — MLP complet construit dynamiquement
67
+ - `name : str` — Nom du réseau
68
+
69
+ | **Attributs** | **Type** | **Description** |
70
+ |---------------|--------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------|
71
+ | `losses` | [`list[float]`](https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range) | Historique des pertes cumulées lors de l'entraînement |
72
+ | `learnings` | [`list[float]`](https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range) | Historique des taux d'apprentissage utilisées lors de l'entraînement |
73
+ | `model` | [`nn.Sequential`](https://docs.pytorch.org/docs/stable/generated/torch.nn.Sequential.html) | MLP complet construit dynamiquement |
74
+ | `name` | [`str`](https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str) | Nom du réseau |
70
75
 
71
76
  ---
72
77
 
73
- #### `Trainer`
78
+ ### **Trainer**
74
79
 
75
80
  Cette classe fournit :
76
81
 
77
82
  - Méthode pour entraîner des réseaux avec mini-batchs et [Automatic Mixed Precision](https://docs.pytorch.org/tutorials/recipes/recipes/amp_recipe.html)
78
83
 
79
- ##### Paramètres
84
+ #### **Paramètres**
80
85
 
81
86
  | **Paramètres** | **Type** | **Optionnel** | **Description** |
82
87
  |----------------|-------------------------------------------------------------------------------------------------|---------------|-----------------------------------------------------------------------------------------------------------------|
83
- | `*nets` | [`MLP`](#MLP) | Non | Réseaux pour lesquels le trainer va entrainer. |
88
+ | `*nets` | [`MLP`](#mlp-mlp) | Non | Réseaux pour lesquels le trainer va entrainer. |
84
89
  | `inputs` | [`numpy.array(list[float])`](https://numpy.org/doc/stable/reference/generated/numpy.array.html) | Non | Données en entrée au réseau. |
85
90
  | `outputs` | [`numpy.array(list[float])`](https://numpy.org/doc/stable/reference/generated/numpy.array.html) | Non | Données en sortie au réseau. |
86
91
  | `test_size` | [`float`](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex) | Oui | Proportion des données à utiliser pendant l'entrainement. Si None : utilise toutes les données. Default: `None` |
87
- | `optim` | [`optim`](#optims) | Oui | Nom de l’optimiseur à utiliser (doit exister dans `optims()`). Default: `'Adam'` |
92
+ | `optim` | [`optim`](#optims-optims) | Oui | Nom de l’optimiseur à utiliser (doit exister dans `optims()`). Default: `'Adam'` |
88
93
  | `init_lr` | [`float`](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex) | Oui | Taux d’apprentissage initial pour l’optimiseur. Default: `1e-3` |
89
- | `crit` | [`crit`](#crits) | Oui | Fonction de perte à utiliser (doit exister dans `crits()`). Default: `MSE'` |
94
+ | `crit` | [`crit`](#crits-crits) | Oui | Fonction de perte à utiliser (doit exister dans `crits()`). Default: `MSE'` |
90
95
  | `batch_size` | [`int`](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex) | Oui | Taille des minibatchs. Default: `1024` |
91
96
 
92
- ##### `Trainer.train`
97
+ #### **Trainer.train**
93
98
 
94
99
  Lancement d'un entrainement avec le trainer définit
95
100
 
@@ -100,9 +105,21 @@ Lancement d'un entrainement avec le trainer définit
100
105
 
101
106
  ---
102
107
 
103
- ### Dictionnaires
108
+ ## **Méthodes**
109
+
110
+ ### **losses**
111
+
112
+ Affiche les résidus en fonction des époques d'entrainement des réseaux.
113
+
114
+ ### **learnings**
115
+
116
+ Affiche les taux d'apprentissage en fonction des époques d'entrainement des réseaux.
117
+
118
+ ---
119
+
120
+ ## **Dictionnaires**
104
121
 
105
- #### `norms()` {#norms}
122
+ ### **norms**
106
123
 
107
124
  | **Valeurs** | **Module PyTorch** | **Description** |
108
125
  |---------------|--------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------|
@@ -118,20 +135,9 @@ Lancement d'un entrainement avec le trainer définit
118
135
  | `'Hardtanh'` | [`nn.Hardtanh()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.Hardtanh.html) | Variante de Tanh, avec des sorties limitées entre une plage spécifiée. |
119
136
  | `'Softsign'` | [`nn.Softsign()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.Softsign.html) | Fonction d'activation similaire à Tanh mais plus souple, avec des valeurs dans [-1, 1]. |
120
137
 
121
- #### `crits()` {#crits}
122
-
123
- | **Valeurs** | **Module PyTorch** | **Description** |
124
- |--------------------------|--------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------|
125
- | `'MSE'` | [`nn.MSELoss`](https://pytorch.org/docs/stable/generated/torch.nn.MSELoss.html) | Perte utilisée pour les régressions. |
126
- | `'L1'` | [`nn.L1Loss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.L1Loss.html) | Perte utilisée pour la régularisation. |
127
- | `'SmoothL1'` | [`nn.SmoothL1Loss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.SmoothL1Loss.html) | Perte moins sensible aux outliers. |
128
- | `'Huber'` | [`nn.HuberLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.HuberLoss.html) | Perte moins affectée par les grands écarts. |
129
- | `'CrossEntropy'` | [`nn.CrossEntropyLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html) | Perte utilisée pour les problèmes de classification multi-classes. |
130
- | `'KLDiv'` | [`nn.KLDivLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.KLDivLoss.html) | Perte utilisée pour des modèles probabilistes. |
131
- | `'PoissonNLL'` | [`nn.PoissonNLLLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.PoissonNLLLoss.html) | Perte utilisée pour la modélisation de comptages. |
132
- | `'MultiLabelSoftMargin'` | [`nn.MultiLabelSoftMarginLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.MultiLabelSoftMarginLoss.html) | Perte utilisée pour les problèmes de classification multi-étiquettes. |
138
+ ---
133
139
 
134
- #### `optims()` {#optims}
140
+ ### **optims**
135
141
 
136
142
  | **Valeurs** | **Module PyTorch** | **Description** |
137
143
  |---------------|--------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------|
@@ -146,27 +152,42 @@ Lancement d'un entrainement avec le trainer définit
146
152
  | `'RMSprop'` | [`optim.RMSprop()`](https://docs.pytorch.org/docs/stable/generated/torch.optim.RMSprop.html) | Optimiseur utilisant une moyenne mobile des carrés des gradients pour réduire les oscillations. |
147
153
  | `'Rprop'` | [`optim.Rprop()`](https://docs.pytorch.org/docs/stable/generated/torch.optim.Rprop.html) | Optimiseur basé sur les mises à jour des poids indépendantes des gradients. |
148
154
  | `'SGD'` | [`optim.SGD()`](https://docs.pytorch.org/docs/stable/generated/torch.optim.SGD.html) | Optimiseur souvent utilisée avec un taux d'apprentissage constant ou ajusté. |
155
+
156
+ ---
157
+
158
+ ### **crits**
159
+
160
+ | **Valeurs** | **Module PyTorch** | **Description** |
161
+ |--------------------------|--------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------|
162
+ | `'MSE'` | [`nn.MSELoss`](https://pytorch.org/docs/stable/generated/torch.nn.MSELoss.html) | Perte utilisée pour les régressions. |
163
+ | `'L1'` | [`nn.L1Loss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.L1Loss.html) | Perte utilisée pour la régularisation. |
164
+ | `'SmoothL1'` | [`nn.SmoothL1Loss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.SmoothL1Loss.html) | Perte moins sensible aux outliers. |
165
+ | `'Huber'` | [`nn.HuberLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.HuberLoss.html) | Perte moins affectée par les grands écarts. |
166
+ | `'CrossEntropy'` | [`nn.CrossEntropyLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html) | Perte utilisée pour les problèmes de classification multi-classes. |
167
+ | `'KLDiv'` | [`nn.KLDivLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.KLDivLoss.html) | Perte utilisée pour des modèles probabilistes. |
168
+ | `'PoissonNLL'` | [`nn.PoissonNLLLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.PoissonNLLLoss.html) | Perte utilisée pour la modélisation de comptages. |
169
+ | `'MultiLabelSoftMargin'` | [`nn.MultiLabelSoftMarginLoss()`](https://docs.pytorch.org/docs/stable/generated/torch.nn.MultiLabelSoftMarginLoss.html) | Perte utilisée pour les problèmes de classification multi-étiquettes. |
149
170
 
150
171
  ---
151
172
 
152
- ### `device`
173
+ ## **device**
153
174
 
154
175
  variable principale d'allocation des performances
155
176
 
156
- #### **Apple Silicon (macOS)**
177
+ ### **Apple Silicon (macOS)**
157
178
  - Si le système d'exploitation est macOS (nommé `darwin` dans `platform.system()`), la fonction vérifie si l'accélérateur **Metal Performance Shaders** (MPS) est disponible sur l'appareil.
158
- - 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).
179
+ - 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).
159
180
 
160
- #### **Windows**
181
+ ### **Windows**
161
182
  - 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**.
162
183
 
163
- #### **Linux**
184
+ ### **Linux**
164
185
  - Si le système d'exploitation est Linux, plusieurs vérifications sont effectuées :
165
- 1. **CUDA** (NVIDIA) : Si `torch.cuda.is_available()` renvoie `True`, le périphérique sera défini sur `'CUDA'`.
166
- 2. **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).
186
+ 1. **CUDA** (NVIDIA) : Si `torch.cuda.is_available()` renvoie `True`, le périphérique sera défini sur `'cuda'`.
187
+ 2. **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).
167
188
  3. **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**.
168
189
 
169
- #### **Système non reconnu**
170
- - Si aucune des conditions ci-dessus n'est remplie, la fonction retourne `'CPU'` comme périphérique par défaut.
190
+ ### **Système non reconnu**
191
+ - Si aucune des conditions ci-dessus n'est remplie, la fonction retourne `'cpu'` comme périphérique par défaut.
171
192
 
172
193
  ---
File without changes
File without changes