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.

  1. 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).

  1. Construyendo la Red Neuronal con TensorFlow y Keras

Paso 1: Importar las Bibliotecas Necesarias

import tensorflow as tf
from tensorflow.keras import layers, models

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

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

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.

© Copyright 2024. Todos los derechos reservados