Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| projets:creer_son_premier_reseau_de_neurone_from_scratch [12/06/2019 14:23] – amenasria | projets:creer_son_premier_reseau_de_neurone_from_scratch [12/06/2019 14:44] (Version actuelle) – amenasria | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ==== Mon premier réseau de neurones from scratch ==== | ||
| + | // | ||
| + | |||
| + | === Qu'est ce qu'un réseau de neurones ? === | ||
| + | |||
| + | La plupart des articles compare ce concept à celui du cerveau humain. Cette image, bien que parlante, est assez éloignée de la réalité. | ||
| + | |||
| + | Il est plus facile de décrire un réseau de neurones comme une fonction mathématique qui à partir d'un élément initialement donné (input) renvoie un élément (output) désiré. | ||
| + | |||
| + | - | ||
| + | |||
| + | Ainsi un réseau de neurones est constitués des composants suivants : | ||
| + | |||
| + | * Une couche d' | ||
| + | * Un nombre arbitraire de couches cachées (**hidden layers**) | ||
| + | * Une couche de sortie (**output layer**), **ŷ** | ||
| + | * Un set de poids (**weights**) et de préjugés (**biases**) entre chaque couche, **W** et **b** | ||
| + | * Le choix d'une fonction d' | ||
| + | |||
| + | //Nous choisirons ici la fonction [[https:// | ||
| + | |||
| + | - | ||
| + | |||
| + | Le graphique suivant nous montre l' | ||
| + | (N.B: on exclut l' | ||
| + | |||
| + | |||
| + | {{ : | ||
| + | |||
| + | === Création de l' | ||
| + | |||
| + | Commençons par importer les librairies dont nous aurons besoin : | ||
| + | |||
| + | <file python> | ||
| + | import numpy as np | ||
| + | </ | ||
| + | |||
| + | Puis créons la classe selon les composants dont nous avons parlé plus tôt : | ||
| + | |||
| + | <file python> | ||
| + | class NeuralNetwork: | ||
| + | def __init__(self, | ||
| + | self.input | ||
| + | self.weights1 = np.random.rand(self.input.shape[1], | ||
| + | self.weights2 = np.random.rand(4, | ||
| + | self.y | ||
| + | self.output | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | === Entraînement de notre réseau de neurones === | ||
| + | |||
| + | L' | ||
| + | |||
| + | L' | ||
| + | |||
| + | On remarque dans les équations ci-dessus que les poids **W** et les préjugés **b** sont les seules variables dont dépend **ŷ**. | ||
| + | |||
| + | Naturellement, | ||