En este tema, aprenderemos a construir una red neuronal simple utilizando TensorFlow y Keras. Este es un paso fundamental para entender cómo funcionan las redes neuronales y cómo podemos utilizarlas para resolver problemas de aprendizaje automático.
Objetivos
- Comprender la estructura básica de una red neuronal.
- Aprender a construir una red neuronal simple utilizando TensorFlow y Keras.
- Entrenar la red neuronal con un conjunto de datos.
- Evaluar el rendimiento de la red neuronal.
- Estructura Básica de una Red Neuronal
Una red neuronal se compone de capas de neuronas. Las capas más comunes son:
- Capa de entrada: Recibe los datos de entrada.
- Capas ocultas: Procesan los datos a través de funciones de activación.
- Capa de salida: Produce la salida final.
Ejemplo de una Red Neuronal Simple
Imaginemos una red neuronal con:
- Una capa de entrada con 784 neuronas (por ejemplo, para imágenes de 28x28 píxeles).
- Una capa oculta con 128 neuronas.
- Una capa de salida con 10 neuronas (por ejemplo, para clasificar dígitos del 0 al 9).
- Construyendo la Red Neuronal con TensorFlow y Keras
Paso 1: Importar las Bibliotecas Necesarias
Paso 2: Definir el Modelo
Utilizaremos la API secuencial de Keras para definir nuestra red neuronal.
model = models.Sequential([ layers.Flatten(input_shape=(28, 28)), # Capa de entrada layers.Dense(128, activation='relu'), # Capa oculta layers.Dense(10, activation='softmax') # Capa de salida ])
Explicación del Código
layers.Flatten(input_shape=(28, 28))
: Aplana la entrada de 28x28 píxeles en un vector de 784 elementos.layers.Dense(128, activation='relu')
: Capa densa con 128 neuronas y función de activación ReLU.layers.Dense(10, activation='softmax')
: Capa densa con 10 neuronas y función de activación softmax para clasificación.
Paso 3: Compilar el Modelo
Explicación del Código
optimizer='adam'
: Utiliza el optimizador Adam.loss='sparse_categorical_crossentropy'
: Función de pérdida para clasificación categórica.metrics=['accuracy']
: Métrica de precisión para evaluar el modelo.
Paso 4: Entrenar el Modelo
Para entrenar el modelo, utilizaremos el conjunto de datos MNIST, que contiene imágenes de dígitos escritos a mano.
# Cargar el conjunto de datos MNIST mnist = tf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() # Normalizar los datos x_train, x_test = x_train / 255.0, x_test / 255.0 # Entrenar el modelo model.fit(x_train, y_train, epochs=5)
Explicación del Código
mnist.load_data()
: Carga el conjunto de datos MNIST.x_train, x_test = x_train / 255.0, x_test / 255.0
: Normaliza los datos de entrada.model.fit(x_train, y_train, epochs=5)
: Entrena el modelo durante 5 épocas.
Paso 5: Evaluar el Modelo
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2) print('\nPrecisión en el conjunto de prueba:', test_acc)
Explicación del Código
model.evaluate(x_test, y_test, verbose=2)
: Evalúa el modelo en el conjunto de prueba.print('\nPrecisión en el conjunto de prueba:', test_acc)
: Imprime la precisión del modelo.
Ejercicio Práctico
Ejercicio 1: Modificar la Red Neuronal
Modifica la red neuronal para que tenga dos capas ocultas con 64 y 32 neuronas respectivamente. Entrena y evalúa el modelo.
Solución
model = models.Sequential([ layers.Flatten(input_shape=(28, 28)), layers.Dense(64, activation='relu'), layers.Dense(32, activation='relu'), layers.Dense(10, activation='softmax') ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) model.fit(x_train, y_train, epochs=5) test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2) print('\nPrecisión en el conjunto de prueba:', test_acc)
Resumen
En esta sección, hemos aprendido a construir una red neuronal simple utilizando TensorFlow y Keras. Hemos cubierto los pasos para definir, compilar, entrenar y evaluar el modelo. Además, hemos realizado un ejercicio práctico para reforzar los conceptos aprendidos. En el próximo tema, exploraremos las funciones de activación en mayor detalle.
Curso de TensorFlow
Módulo 1: Introducción a TensorFlow
- ¿Qué es TensorFlow?
- Configuración de TensorFlow
- Conceptos Básicos de TensorFlow
- Hola Mundo en TensorFlow
Módulo 2: Fundamentos de TensorFlow
Módulo 3: Manejo de Datos en TensorFlow
Módulo 4: Construcción de Redes Neuronales
- Introducción a Redes Neuronales
- Creando una Red Neuronal Simple
- Funciones de Activación
- Funciones de Pérdida y Optimizadores
Módulo 5: Redes Neuronales Convolucionales (CNNs)
Módulo 6: Redes Neuronales Recurrentes (RNNs)
- Introducción a RNNs
- Construyendo una RNN
- Memoria a Largo Plazo (LSTM)
- Unidades Recurrentes Gated (GRUs)
Módulo 7: Técnicas Avanzadas de TensorFlow
- Capas y Modelos Personalizados
- TensorFlow Hub
- Aprendizaje por Transferencia
- Ajuste de Hiperparámetros