20.4. Construyendo redes neuronales con Keras y TensorFlow
El desarrollo de redes neuronales se ha vuelto más accesible con la introducción de bibliotecas de alto nivel como Keras, que opera sobre TensorFlow, una potente biblioteca de aprendizaje automático. En este capítulo, exploraremos cómo construir modelos secuenciales en Keras, permitiendo la creación de redes neuronales profundas de una manera simplificada y eficiente.
Introducción a Keras
Keras es una API de red neuronal de alto nivel escrita en Python que es capaz de ejecutarse sobre TensorFlow, CNTK o Theano. Fue desarrollado centrándose en la experimentación rápida y la productividad, permitiendo que las ideas se transformen en resultados con un retraso mínimo. La simplicidad y facilidad de uso de Keras la han convertido en una de las herramientas más populares entre los científicos de datos y los ingenieros de aprendizaje automático.
Modelos secuenciales en Keras
Un modelo secuencial en Keras es una pila lineal de capas. Es el tipo de modelo más simple y adecuado para la mayoría de los problemas de aprendizaje profundo. Con él, puedes crear una red neuronal agregando capas una tras otra de forma secuencial.
Instalación de Keras y TensorFlow
Antes de comenzar a construir un modelo, debe instalar Keras y TensorFlow. Esto se puede hacer fácilmente usando pip, el administrador de paquetes de Python:
instalación de pip tensorflow pip instalar keras
Después de la instalación, puedes importar Keras y verificar la versión de TensorFlow para asegurarte de que todo esté configurado correctamente:
importar tensorflow como tf importar keras imprimir(tf.__versión__) imprimir(keras.__versión__)
Construyendo un modelo secuencial
Para construir un modelo secuencial en Keras, comience importando la clase Sequential
y agregando capas usando el método add()
. Construyamos un modelo simple para la clasificación de imágenes:
desde keras.models importar secuencial desde keras.layers importe Dense, Flatten, Conv2D, MaxPooling2D # Inicializar el modelo secuencial modelo = Secuencial() # Agregar una capa convolucional model.add(Conv2D(32, (3, 3), activación='relu', input_shape=(28, 28, 1))) # Agregar una capa de agrupación modelo.add(MaxPooling2D((2, 2))) # Aplanar la salida para proporcionar entrada a las capas densas model.add(Aplanar()) # Agrega una capa densa (completamente conectada) model.add(Denso(100, activación='relu')) # Agregar capa de salida model.add(Denso(10, activación='softmax'))
Este modelo consta de una capa convolucional seguida de una capa de agrupación, una capa de aplanamiento y dos capas densas. La última capa densa utiliza la función de activación softmax para obtener probabilidades de clasificación para cada una de las 10 clases posibles.
Compilando el modelo
Después de construir el modelo, es necesario compilarlo. Esto se hace usando el método compile()
, donde defines la función de pérdida, el optimizador y las métricas de evaluación:
model.compile(optimizador='adam', pérdida = 'categorical_crossentropy', métricas = ['precisión'])
La función de pérdida categorical_crossentropy
se usa comúnmente en problemas de clasificación multiclase. El optimizador adam
es una opción popular debido a su eficiencia y ajuste automático de la tasa de aprendizaje.
Entrenando el modelo
Con el modelo compilado, puedes entrenarlo usando el método fit()
. Deberá proporcionar los datos de entrenamiento, las etiquetas, la cantidad de épocas y el tamaño del lote:
historial = model.fit(train_data, train_labels, épocas=10, lote_size=32)
El objeto history
contiene información sobre el proceso de entrenamiento, como la pérdida y la precisión en cada época, que se puede utilizar para análisis y ajuste del modelo.
Evaluar y guardar el modelo
Después del entrenamiento, puede evaluar el rendimiento del modelo en los datos de prueba utilizando el método evaluate()
:
test_loss, test_acc = model.evaluate(test_data, test_labels) print('Precisión de la prueba:', test_acc)
Si está satisfecho con el rendimiento del modelo, puede guardarlo usando el método save()
, lo que le permitirá cargarlo más tarde para hacer predicciones o continuar entrenando:
modelo.save('mi_modelo.h5')
Conclusión
Construir redes neuronales con Keras y TensorFlow es un proceso sencillo y eficiente. La API secuencial de Keras le permite crear modelos capa por capa, mientras que TensorFlow proporciona la solidez y escalabilidad necesarias para entrenar modelos complejos. con la portadaCapaz de compilar, entrenar, evaluar y guardar modelos fácilmente, Keras es una herramienta indispensable para cualquier persona interesada en el aprendizaje profundo con Python.