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.
Antes de comenzar, asegúrese de tener instaladas las siguientes bibliotecas:
pip install tensorflow numpy matplotlib
Comience importando las bibliotecas esenciales:
import tensorflow as tf from tensorflow.keras import layers, models import matplotlib.pyplot as plt
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
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'))
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'])
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))
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}')
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()
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
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