Maison  >  Article  >  développement back-end  >  Analyse de la technologie sous-jacente de Python : comment implémenter des réseaux de neurones

Analyse de la technologie sous-jacente de Python : comment implémenter des réseaux de neurones

PHPz
PHPzoriginal
2023-11-08 16:02:26806parcourir

Analyse de la technologie sous-jacente de Python : comment implémenter des réseaux de neurones

Analyse de la technologie sous-jacente de Python : comment implémenter des réseaux de neurones nécessite des exemples de code spécifiques

Dans le domaine de l'intelligence artificielle moderne, les réseaux de neurones sont l'une des technologies les plus couramment utilisées et les plus importantes. Il simule le principe de fonctionnement du cerveau humain et réalise des tâches complexes grâce à la connexion de plusieurs couches de neurones. En tant que langage de programmation puissant et facile à utiliser, Python offre une prise en charge étendue et une commodité pour la mise en œuvre de réseaux neuronaux. Cet article approfondira la technologie sous-jacente aux réseaux de neurones et démontrera sa mise en œuvre à travers des exemples de code détaillés.

1. Structure du réseau neuronal

Le réseau neuronal se compose de trois parties principales : la couche d'entrée, la couche cachée et la couche de sortie. La couche d'entrée reçoit des données brutes ou des vecteurs de caractéristiques, la couche cachée convertit l'entrée en une représentation plus abstraite via une série de pondérations et de fonctions d'activation, et enfin la couche de sortie produit le résultat final de la prédiction.

2. Étapes de base pour implémenter des réseaux de neurones en Python

1. Importez les bibliothèques nécessaires

En Python, nous pouvons utiliser NumPy pour les calculs numériques et Matplotlib pour les opérations de visualisation. Par conséquent, ces deux bibliothèques doivent d’abord être importées.

import numpy as np
import matplotlib.pyplot as plt

2. Définir la classe de réseau neuronal

Dans le code, nous l'implémentons en définissant une classe de réseau neuronal. Cette classe contient une fonction d'initialisation, une fonction de propagation directe et une fonction de propagation arrière.

class NeuralNetwork:
    def __init__(self, input_size, hidden_size, output_size):
        self.input_size = input_size
        self.hidden_size = hidden_size
        self.output_size = output_size
        self.W1 = np.random.randn(self.input_size, self.hidden_size) 
        self.W2 = np.random.randn(self.hidden_size, self.output_size)

    def forward(self, X):
        self.z1 = np.dot(X, self.W1)
        self.a1 = self.sigmoid(self.z1)
        self.z2 = np.dot(self.a1, self.W2)
        self.output = self.sigmoid(self.z2)

    def backward(self, X, y):
        self.error = y - self.output
        self.delta_output = self.error * self.sigmoid_derivative(self.output)
        self.error_hidden = self.delta_output.dot(self.W2.T)
        self.delta_hidden = self.error_hidden * self.sigmoid_derivative(self.a1)

        self.W2 += self.a1.T.dot(self.delta_output)
        self.W1 += X.T.dot(self.delta_hidden)

3. Définir la fonction d'activation et ses dérivés

Les fonctions d'activation couramment utilisées incluent la fonction sigmoïde et la fonction ReLU. La dérivée de la fonction d'activation joue un rôle clé dans le processus de rétropropagation. Vous trouverez ci-dessous un exemple de code pour ces deux fonctions.

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def sigmoid_derivative(x):
    return x * (1 - x)

def relu(x):
    return np.maximum(0, x)

4. Modèle de réseau neuronal de formation

Pendant le processus de formation, nous devons préparer les données de formation et les étiquettes cibles. En appelant continuellement les fonctions de propagation avant et de propagation arrière, les paramètres de poids sont progressivement optimisés afin que la sortie du réseau neuronal soit aussi proche que possible de l'étiquette cible.

X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([[0], [1], [1], [0]])

nn = NeuralNetwork(2, 4, 1)

for i in range(10000):
    nn.forward(X)
    nn.backward(X, y)

print("Output after training:")
print(nn.output)

5. Visualisation des résultats

Enfin, nous pouvons utiliser la bibliothèque Matplotlib pour visualiser les résultats de la prédiction.

plt.scatter(X[:, 0], X[:, 1], c=nn.output.flatten(), cmap='viridis')
plt.title("Neural Network")
plt.xlabel("Input1")
plt.ylabel("Input2")
plt.show()

En exécutant le code ci-dessus, nous pouvons voir les résultats de classification des données d'entrée par le réseau neuronal.

Cet article montre comment utiliser la technologie sous-jacente Python pour implémenter des réseaux de neurones à travers des exemples de code détaillés. Grâce à ces technologies, nous sommes en mesure de créer et de former une variété de modèles de réseaux neuronaux complexes pour résoudre diverses tâches d'intelligence artificielle. J'espère que cet article vous aidera à comprendre la mise en œuvre sous-jacente des réseaux de neurones et à améliorer vos compétences en programmation Python. Explorons ensemble la puissance des réseaux de neurones !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn