Maison  >  Article  >  développement back-end  >  Construire un réseau neuronal convolutif de base (CNN) en Python

Construire un réseau neuronal convolutif de base (CNN) en Python

WBOY
WBOYoriginal
2024-08-28 18:33:07870parcourir

Building a Basic Convolutional Neural Network (CNN) in Python

Les réseaux de neurones convolutifs (CNN) sont des outils puissants pour les tâches de traitement et de reconnaissance d'images. Ils sont conçus pour apprendre automatiquement et de manière adaptative les hiérarchies spatiales des caractéristiques par rétropropagation. Passons à la création d'un CNN de base à l'aide de Python et TensorFlow/Keras.

? Conditions préalables

Avant de commencer, assurez-vous que les bibliothèques suivantes sont installées :

pip install tensorflow numpy matplotlib

?️ Étape 1 : Importer les bibliothèques nécessaires

Commencez par importer les bibliothèques essentielles :

import tensorflow as tf
from tensorflow.keras import layers, models
import matplotlib.pyplot as plt

?️ Étape 2 : Charger et prétraiter l'ensemble de données

Pour cet exemple, nous utiliserons l'ensemble de données CIFAR-10, qui se compose de 60 000 images couleur 32x32 réparties en 10 classes.

# Load the CIFAR-10 dataset
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data()

# Normalize the pixel values to be between 0 and 1
x_train, x_test = x_train / 255.0, x_test / 255.0

? Étape 3 : Créer le modèle CNN

Maintenant, construisons le modèle CNN. Ce modèle comprendra les couches clés : couches convolutives, poolées et denses.

model = models.Sequential()

# First Convolutional Layer
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))

# Second Convolutional Layer
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))

# Third Convolutional Layer
model.add(layers.Conv2D(64, (3, 3), activation='relu'))

# Flatten the output and add Dense layers
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))

? Étape 4 : Compiler le modèle

La compilation du modèle implique de spécifier l'optimiseur, la fonction de perte et les métriques à surveiller pendant la formation.

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

? Étape 5 : Former le modèle

Entraînez le modèle CNN sur les données d'entraînement pendant quelques époques.

history = model.fit(x_train, y_train, epochs=10, 
                    validation_data=(x_test, y_test))

? Étape 6 : évaluer le modèle

Après l'entraînement, évaluez le modèle sur les données de test pour voir ses performances.

test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print(f'\nTest accuracy: {test_acc}')

?️ Étape 7 : Visualiser les résultats de l'entraînement

Enfin, visualisons la précision et la perte au fil des époques d'entraînement.

plt.plot(history.history['accuracy'], label='accuracy')
plt.plot(history.history['val_accuracy'], label = 'val_accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.ylim([0, 1])
plt.legend(loc='lower right')
plt.show()

? Conclusion

Ce modèle CNN de base constitue un excellent point de départ pour aborder les tâches de classification d'images. En comprenant et en modifiant ce modèle, vous pouvez expérimenter différentes architectures et techniques pour améliorer les performances de votre modèle. Continuez à explorer et à peaufiner les couches pour créer des réseaux de neurones encore plus puissants ! ?


Ce code est conçu pour être facile à suivre et à modifier, ce qui le rend adapté aux débutants et à ceux qui cherchent à se lancer avec les CNN en Python.

Lien du blog pour l'architecture CNN :https://dev.to/abhinowww/demystifying-cnn-neural-network-layers-a-deep-dive-into-ai-architecture-12d2

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