Construye una CNN en Python con TensorFlow y Keras

Find AI Tools
No difficulty
No complicated process
Find ai tools

Construye una CNN en Python con TensorFlow y Keras

Tabla de contenidos:

  1. Importación de bibliotecas
  2. Procesamiento de datos de entrenamiento
  3. Procesamiento de datos de prueba
  4. Construcción de la CNN
  5. Compilación de la CNN
  6. Ajuste del modelo
  7. Evaluación del rendimiento del modelo
  8. Mejora del rendimiento del modelo
  9. Conclusiones
  10. Recursos adicionales

Importación de bibliotecas

Para comenzar nuestro proyecto de construcción de una red neuronal convolucional, primero debemos importar las bibliotecas necesarias. En este caso, importaremos TensorFlow y el módulo de preprocesamiento de imágenes de la biblioteca Caris.

import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator

Procesamiento de datos de entrenamiento

En esta sección, nos centraremos en el preprocesamiento de los datos de entrenamiento. Aplicaremos transformaciones a las imágenes del conjunto de entrenamiento para evitar el sobreajuste. Utilizaremos el generador de datos de imágenes de TensorFlow para aplicar técnicas de aumento de imágenes como transvección, rotación, volteo horizontal y zoom. Estas transformaciones ayudarán a aumentar la diversidad de las imágenes de entrenamiento y mejorarán el rendimiento del modelo.

# Paso 1: Definir el generador de datos de imágenes
train_datagen = ImageDataGenerator(
    rescale=1./255,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True
)

# Paso 2: Generar lotes de imágenes de entrenamiento
training_set = train_datagen.flow_from_directory(
    directory='data_set/training_set',
    target_size=(64, 64),
    batch_size=32,
    class_mode='binary'
)

Procesamiento de datos de prueba

En esta sección, realizaremos el preprocesamiento de los datos de prueba. A diferencia de los datos de entrenamiento, no aplicaremos transformaciones a las imágenes de prueba. Solo escalaremos las imágenes dividiendo sus valores de píxel por 255. También crearemos lotes de imágenes de prueba utilizando el generador de datos de imágenes de TensorFlow.

# Paso 1: Definir el generador de datos de imágenes
test_datagen = ImageDataGenerator(rescale=1./255)

# Paso 2: Generar lotes de imágenes de prueba
test_set = test_datagen.flow_from_directory(
    directory='data_set/test_set',
    target_size=(64, 64),
    batch_size=32,
    class_mode='binary'
)

Construcción de la CNN

En esta sección, construiremos nuestra red neuronal convolucional (CNN). Utilizaremos la API de Keras de TensorFlow para construir la arquitectura de la CNN. Comenzaremos agregando capas de convolución y agrupación a nuestra red y luego aplanaremos las características. A continuación, agregaremos capas totalmente conectadas y finalmente agregaremos una capa de salida con una función de activación sigmoide.

# Paso 1: Inicializar la CNN
cnn = tf.keras.models.Sequential()

# Paso 2: Agregar capas de convolución y agrupación
cnn.add(tf.keras.layers.Conv2D(filters=32, kernel_size=3, activation='relu', input_shape=(64, 64, 3)))
cnn.add(tf.keras.layers.MaxPooling2D(pool_size=2, strides=2))

# Paso 3: Aplanar las características
cnn.add(tf.keras.layers.Flatten())

# Paso 4: Agregar capas totalmente conectadas
cnn.add(tf.keras.layers.Dense(units=128, activation='relu'))
cnn.add(tf.keras.layers.Dense(units=1, activation='sigmoid'))

Compilación de la CNN

En esta sección, compilaremos nuestra CNN especificando la función de pérdida, el algoritmo de optimización y las métricas utilizadas para evaluar el rendimiento del modelo. Utilizaremos la pérdida de entropía cruzada binaria, el algoritmo de optimización Adam y la métrica de precisión.

# Compilar la CNN
cnn.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

Ajuste del modelo

En esta sección, ajustaremos nuestro modelo de CNN utilizando los datos de entrenamiento. Especificaremos el número de épocas y el tamaño del lote y entrenaremos el modelo utilizando el generador de datos de imágenes.

# Ajustar el modelo a los datos de entrenamiento
history = cnn.fit(
    x=training_set,
    validation_data=test_set,
    epochs=25
)

Evaluación del rendimiento del modelo

En esta sección, evaluaremos el rendimiento de nuestro modelo de CNN utilizando los datos de prueba. Calcularemos la precisión y la pérdida del modelo utilizando el método evaluate().

# Evaluar el rendimiento del modelo en los datos de prueba
loss, accuracy = cnn.evaluate(test_set)
print('Test Loss:', loss)
print('Test Accuracy:', accuracy)

Mejora del rendimiento del modelo

Si deseamos mejorar el rendimiento de nuestro modelo, podemos experimentar con diferentes arquitecturas de la CNN, ajustar los hiperparámetros de entrenamiento y realizar técnicas como ajuste de aprendizaje y regularización.

Conclusiones

En este proyecto, hemos construido una CNN utilizando TensorFlow y el módulo de preprocesamiento de imágenes de Caris. Aplicamos transformaciones a las imágenes de entrenamiento para evitar el sobreajuste y evaluamos el rendimiento del modelo en los datos de prueba. A través de la experimentación y la mejora continua, podemos lograr resultados aún mejores en futuros proyectos de CNN.

Recursos adicionales

Most people like

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.