29 noviembre, 2024
Keras Tutorial
29 noviembre, 2024
: Guía Completa para Iniciar en Deep Learning
Keras es una biblioteca de Python ampliamente utilizada para construir y entrenar modelos de machine learning, especialmente en el ámbito del deep learning. Desde su creación, se ha convertido en una de las herramientas más populares debido a su facilidad de uso y su capacidad para integrarse con otras bibliotecas como TensorFlow. En este tutorial, exploraremos los conceptos básicos de Keras, desde la instalación hasta la construcción de modelos, validación y predicción.
¿Qué es Keras?
Keras es una biblioteca de alto nivel para el desarrollo de modelos de deep learning que está diseñada para facilitar la creación de redes neuronales. Permite a los desarrolladores crear modelos de aprendizaje profundo de manera simple y rápida, utilizando sus componentes básicos: capas, modelos y optimizadores. Keras es modular, lo que significa que puedes combinar diferentes capas y modelos de manera flexible.
Instalación de Keras
Antes de empezar, necesitas tener Python instalado en tu sistema. Para instalar Keras, se recomienda usar pip. Podrás instalar Keras junto con TensorFlow, que es el backend predeterminado para Keras:
bash
pip install tensorflow
Esto instalará tanto TensorFlow como Keras, ya que Keras ahora forma parte de TensorFlow. También puedes verificar tu instalación ejecutando:
python
import keras
print(keras.version)
Estructura básica de un modelo en Keras
Un modelo en Keras se puede crear de dos maneras: secuencial y funcional. La forma más sencilla para principiantes es usar el modelo secuencial. A continuación, veremos cómo construir tu primer modelo usando el enfoque secuencial.
Creando un modelo secuencial
Un modelo secuencial es una pila lineal de capas. Por ejemplo, si deseas construir un modelo de clasificación de imágenes, puedes definirlo de la siguiente manera:
python
from keras.models import Sequential
from keras.layers import Dense, Flatten, Conv2D, MaxPooling2D
Crear el modelo secuencial
model = Sequential()
Añadir capas
model.add(Conv2D(32, kernelsize=(3, 3), activation='relu', inputshape=(28, 28, 1)))
model.add(MaxPooling2D(poolsize=(2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))
En este ejemplo, hemos construido un modelo simple de red neuronal convolucional (CNN) destinado a la clasificación de imágenes de 28×28 píxeles.
Compilación del modelo
Una vez que has definido tu modelo, debes compilarlo. Este paso implica elegir un optimizador, una función de pérdida y una métrica. Aquí tienes un ejemplo de cómo compilar el modelo:
python
model.compile(optimizer='adam', loss='categoricalcrossentropy', metrics=['accuracy'])
- optimizer: Este es el método que se utilizará para ajustar los pesos del modelo. Se recomienda utilizar
adam
para la mayoría de los problemas. - loss: La función de pérdida se usa para evaluar qué tan bien se está desempeñando el modelo. En el caso de clasificación múltiple,
categoricalcrossentropy
es una excelente opción. - metrics: Aquí especificamos que queremos rastrear la precisión del modelo durante el entrenamiento.
Entrenamiento del modelo
Para entrenar el modelo, necesitarás un conjunto de datos. A continuación, mostraremos cómo usar el conjunto de datos MNIST para el entrenamiento. Este conjunto contiene dígitos manuscritos del 0 al 9 y es ideal para principiantes.
Preparación de los datos
Primero, deberás cargar los datos. Keras facilita esto con su módulo de datos:
python
from keras.datasets import mnist
from keras.utils import tocategorical
Cargar los datos
(xtrain, ytrain), (xtest, ytest) = mnist.loaddata()
Normalizar los datos
xtrain = xtrain.reshape((60000, 28, 28, 1)).astype('float32') / 255
xtest = xtest.reshape((10000, 28, 28, 1)).astype('float32') / 255
Convertir las etiquetas a categorías
ytrain = tocategorical(ytrain, 10)
ytest = tocategorical(ytest, 10)
Entrenando el modelo
Ahora que tenemos nuestros datos listos, podemos entrenar nuestro modelo. Utilizaremos el método
fit
de Keras, que permite llevar a cabo el proceso de entrenamiento:python
model.fit(xtrain, ytrain, validationdata=(xtest, ytest), epochs=10, batchsize=32)
- validationdata: Esto te permite ver cómo se desempeña el modelo en datos de prueba durante el entrenamiento.
- epochs: El número de veces que el modelo pasará por todo el conjunto de entrenamiento.
- batchsize: El número de muestras que se procesarán antes de actualizar el modelo.
Evaluación del modelo
Después del entrenamiento, es importante evaluar el rendimiento del modelo. Esto se puede hacer usando el método
evaluate
:python
testloss, testaccuracy = model.evaluate(xtest, ytest)
print(f'Test accuracy: {testaccuracy}')
Predicción con el modelo
Una vez que el modelo ha sido entrenado y evaluado, puedes hacer predicciones usando el método
predict
. Aquí te mostramos cómo hacerlo:python
import numpy as np
predictions = model.predict(xtest)
predictedclasses = np.argmax(predictions, axis=-1)
Por ejemplo, predecir la clase de la primera imagen de prueba
print(f'Predicción para la primera imagen: {predictedclasses[0]}')
Guardar y cargar modelos
Keras permite guardar y cargar modelos fácilmente. Esto es útil si deseas almacenar un modelo entrenado para usarlo más tarde. Puedes guardar un modelo usando:
python
model.save('mimodelo.h5')
Y cargarlo de la siguiente manera:
python
from keras.models import loadmodel
loadedmodel = loadmodel('mimodelo.h5')
Conclusiones
Keras es una biblioteca poderosa que facilita el trabajo con redes neuronales y modelos de deep learning en general. Este tutorial ha cubierto los aspectos fundamentales para comenzar a trabajar con Keras, desde la instalación hasta la creación, entrenamiento y evaluación de un modelo básico.
A medida que te familiarices con Keras, puedes explorar más opciones avanzadas, como el uso de callbacks, la creación de modelos funcionales y la manipulación de pesos. Con su enfoque modular y su integración con TensorFlow, Keras es una herramienta esencial para cualquier científico de datos o ingeniero que desee adentrarse en el aprendizaje profundo. ¡Así que empieza a experimentar y a construir tus propios modelos!