"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Construyendo una red neuronal convolucional básica (CNN) en Python

Construyendo una red neuronal convolucional básica (CNN) en Python

Publicado el 2024-11-01
Navegar:166

Building a Basic Convolutional Neural Network (CNN) in Python

Las redes neuronales convolucionales (CNN) son herramientas poderosas para tareas de procesamiento y reconocimiento de imágenes. Están diseñados para aprender de forma automática y adaptativa jerarquías espaciales de características mediante retropropagación. Profundicemos en la construcción de una CNN básica usando Python y TensorFlow/Keras.

? Requisitos previos

Antes de comenzar, asegúrese de tener instaladas las siguientes bibliotecas:

pip install tensorflow numpy matplotlib

?️ Paso 1: Importar bibliotecas necesarias

Comience importando las bibliotecas esenciales:

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

?️ Paso 2: cargar y preprocesar el conjunto de datos

Para este ejemplo, usaremos el conjunto de datos CIFAR-10, que consta de 60.000 imágenes en color de 32x32 en 10 clases.

# 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

? Paso 3: construir el modelo CNN

Ahora, construyamos el modelo CNN. Este modelo incluirá las capas clave: capas convolucional, de agrupación y densa.

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'))

? Paso 4: compila el modelo

Compilar el modelo implica especificar el optimizador, la función de pérdida y las métricas a monitorear durante el entrenamiento.

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

? Paso 5: entrenar el modelo

Entrene el modelo CNN con los datos de entrenamiento durante algunas épocas.

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

? Paso 6: evaluar el modelo

Después del entrenamiento, evalúe el modelo con los datos de prueba para ver qué tan bien funciona.

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

?️ Paso 7: Visualiza los resultados del entrenamiento

Finalmente, visualicemos la precisión y la pérdida a lo largo de las épocas de entrenamiento.

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()

? Conclusión

Este modelo básico de CNN sirve como un excelente punto de partida para abordar tareas de clasificación de imágenes. Al comprender y modificar este modelo, podrá experimentar con diferentes arquitecturas y técnicas para mejorar el rendimiento de su modelo. ¡Sigue explorando y modificando las capas para construir redes neuronales aún más poderosas! ?


Este código está diseñado para ser fácil de seguir y modificar, lo que lo hace adecuado para principiantes y aquellos que buscan comenzar con CNN en Python.

Enlace del blog para la arquitectura de CNN: https://dev.to/abhinowww/demystifying-cnn-neural-network-layers-a-deep-dive-into-ai-architecture-12d2

Declaración de liberación Este artículo se reproduce en: https://dev.to/abhinowww/building-a-basic-convolutional-neural-network-cnn-in-python-3bab?1 Si hay alguna infracción, comuníquese con [email protected] para borrarlo
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3