Introducción
En este módulo, nos enfocaremos en la implementación práctica de redes neuronales a través de proyectos. Estos proyectos están diseñados para consolidar los conocimientos adquiridos en los módulos anteriores y proporcionar experiencia práctica en el desarrollo y aplicación de redes neuronales.
Objetivos del Módulo
- Aplicar conceptos teóricos: Utilizar los conocimientos teóricos adquiridos sobre redes neuronales y deep learning.
- Desarrollar proyectos prácticos: Implementar proyectos que resuelvan problemas reales utilizando redes neuronales.
- Evaluar y mejorar modelos: Aprender a evaluar el rendimiento de los modelos y aplicar técnicas para mejorarlos.
Proyecto 1: Clasificación de Imágenes con CNN
Descripción del Proyecto
En este proyecto, desarrollaremos una red neuronal convolucional (CNN) para clasificar imágenes en diferentes categorías. Utilizaremos el conjunto de datos CIFAR-10, que contiene 60,000 imágenes de 10 clases diferentes.
Pasos del Proyecto
- Importar Librerías y Conjunto de Datos
- Preprocesamiento de Datos
- Construcción del Modelo CNN
- Entrenamiento del Modelo
- Evaluación del Modelo
- Mejoras y Ajustes
Código de Ejemplo
1. Importar Librerías y Conjunto de Datos
import tensorflow as tf from tensorflow.keras import datasets, layers, models import matplotlib.pyplot as plt # Cargar el conjunto de datos CIFAR-10 (train_images, train_labels), (test_images, test_labels) = datasets.cifar10.load_data() # Normalizar los datos train_images, test_images = train_images / 255.0, test_images / 255.0
2. Preprocesamiento de Datos
# Verificar las dimensiones de los datos print(f'Train images shape: {train_images.shape}') print(f'Test images shape: {test_images.shape}')
3. Construcción del Modelo CNN
model = models.Sequential() model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3))) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.Flatten()) model.add(layers.Dense(64, activation='relu')) model.add(layers.Dense(10))
4. Entrenamiento del Modelo
model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy']) history = model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))
5. Evaluación del Modelo
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') test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2) print(f'Test accuracy: {test_acc}')
6. Mejoras y Ajustes
- Ajustar Hiperparámetros: Modificar la arquitectura de la red, el número de capas, el tamaño de los filtros, etc.
- Aumentar Datos: Utilizar técnicas de aumento de datos para mejorar la generalización del modelo.
- Regularización: Aplicar técnicas como Dropout para evitar el sobreajuste.
Ejercicio Práctico
Tarea: Implementa una red neuronal convolucional para clasificar imágenes del conjunto de datos MNIST. Utiliza las técnicas aprendidas en este proyecto y evalúa el rendimiento de tu modelo.
Proyecto 2: Predicción de Series Temporales con RNN
Descripción del Proyecto
En este proyecto, desarrollaremos una red neuronal recurrente (RNN) para predecir valores futuros en una serie temporal. Utilizaremos datos de temperatura histórica para predecir la temperatura futura.
Pasos del Proyecto
- Importar Librerías y Conjunto de Datos
- Preprocesamiento de Datos
- Construcción del Modelo RNN
- Entrenamiento del Modelo
- Evaluación del Modelo
- Mejoras y Ajustes
Código de Ejemplo
1. Importar Librerías y Conjunto de Datos
import numpy as np import pandas as pd import tensorflow as tf from tensorflow.keras import layers import matplotlib.pyplot as plt # Cargar el conjunto de datos de temperatura url = 'https://raw.githubusercontent.com/jbrownlee/Datasets/master/daily-min-temperatures.csv' data = pd.read_csv(url, parse_dates=['Date'], index_col='Date')
2. Preprocesamiento de Datos
# Normalizar los datos data = (data - data.mean()) / data.std() # Crear secuencias de datos def create_sequences(data, seq_length): xs, ys = [], [] for i in range(len(data)-seq_length): x = data.iloc[i:(i+seq_length)].values y = data.iloc[i+seq_length].values xs.append(x) ys.append(y) return np.array(xs), np.array(ys) seq_length = 30 X, y = create_sequences(data, seq_length) # Dividir en conjuntos de entrenamiento y prueba split = int(0.8 * len(X)) X_train, X_test = X[:split], X[split:] y_train, y_test = y[:split], y[split:]
3. Construcción del Modelo RNN
model = tf.keras.Sequential() model.add(layers.SimpleRNN(50, activation='relu', input_shape=(seq_length, 1))) model.add(layers.Dense(1)) model.compile(optimizer='adam', loss='mse')
4. Entrenamiento del Modelo
5. Evaluación del Modelo
plt.plot(history.history['loss'], label='loss') plt.plot(history.history['val_loss'], label='val_loss') plt.xlabel('Epoch') plt.ylabel('Loss') plt.legend(loc='upper right') # Predicciones predictions = model.predict(X_test) plt.figure(figsize=(10,6)) plt.plot(y_test, label='True Values') plt.plot(predictions, label='Predictions') plt.legend() plt.show()
6. Mejoras y Ajustes
- Ajustar Hiperparámetros: Modificar el número de unidades en la capa RNN, el número de capas, etc.
- Regularización: Aplicar técnicas como Dropout para evitar el sobreajuste.
- Aumentar Datos: Utilizar más datos históricos para mejorar la precisión del modelo.
Ejercicio Práctico
Tarea: Implementa una red neuronal recurrente para predecir la demanda de energía eléctrica utilizando un conjunto de datos de series temporales. Evalúa el rendimiento de tu modelo y realiza ajustes para mejorarlo.
Conclusión
En este módulo, hemos desarrollado proyectos prácticos utilizando redes neuronales convolucionales y recurrentes. Estos proyectos te han proporcionado una experiencia práctica en la implementación y evaluación de modelos de redes neuronales. Continúa practicando con diferentes conjuntos de datos y ajustando tus modelos para mejorar tus habilidades en el desarrollo de redes neuronales.
Resumen del Módulo:
- Implementamos una CNN para la clasificación de imágenes.
- Desarrollamos una RNN para la predicción de series temporales.
- Aprendimos a evaluar y mejorar nuestros modelos.
Próximos Pasos:
- Explora más proyectos y conjuntos de datos.
- Experimenta con diferentes arquitecturas y técnicas de mejora.
- Aplica lo aprendido en problemas del mundo real.
Fundamentos de Inteligencia Artificial (IA)
Módulo 1: Introducción a la Inteligencia Artificial
Módulo 2: Principios Básicos de la IA
Módulo 3: Algoritmos en IA
Módulo 4: Aprendizaje Automático (Machine Learning)
- Conceptos Básicos de Machine Learning
- Tipos de Aprendizaje Automático
- Algoritmos de Machine Learning
- Evaluación y Validación de Modelos
Módulo 5: Redes Neuronales y Deep Learning
- Introducción a las Redes Neuronales
- Arquitectura de Redes Neuronales
- Deep Learning y sus Aplicaciones