Menu iconMenu icon
Aprendizaje automático con Python

Capítulo 11: Redes Neuronales Recurrentes

11.4 Ejercicio Práctico

Utilizaremos Python y la biblioteca Keras para crear un modelo de Memoria a Corto y Largo Plazo (LSTM) para el reconocimiento de actividades humanas.

El ejercicio involucra los siguientes pasos:

  1. Carga de Datos: Utilizaremos el conjunto de datos 'Activity Recognition Using Smart Phones Dataset' disponible en el Repositorio de Aprendizaje Automático de la UCI. El conjunto de datos contiene datos de acelerómetro y giroscopio registrados desde teléfonos inteligentes mientras los usuarios realizaban diferentes actividades como caminar, sentarse, estar de pie, etc.
def load_file(filepath):
    dataframe = read_csv(filepath, header=None, delim_whitespace=True)
    return dataframe.values
  1. Preprocesamiento de Datos: Los datos brutos se preprocesan en ventanas fijas de 2.56 segundos (128 puntos de datos) con un 50% de traslape. Los datos del acelerómetro se dividen en componentes de gravedad (total) y movimiento del cuerpo.
def load_group(filenames, prefix=''):
    loaded = list()
    for name in filenames:
        data = load_file(prefix + name)
        loaded.append(data)
    loaded = dstack(loaded)
    return loaded
  1. Construcción del Modelo: Construiremos un modelo LSTM utilizando Keras. El modelo tendrá una única capa oculta LSTM, seguida de una capa de dropout para reducir el sobreajuste, y una capa densa completamente conectada para interpretar las características extraídas por la capa oculta LSTM. Finalmente, se utilizará una capa de salida densa para hacer predicciones.
model = Sequential()
model.add(LSTM(100, input_shape=(n_timesteps,n_features)))
model.add(Dropout(0.5))
model.add(Dense(100, activation='relu'))
model.add(Dense(n_outputs, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
  1. Entrenamiento del Modelo: El modelo se entrena durante un número fijo de épocas (por ejemplo, 15), y se utilizará un tamaño de lote de 64 muestras.
model.fit(trainX, trainy, epochs=epochs, batch_size=batch_size, verbose=verbose)
  1. Evaluación del Modelo: Una vez que el modelo está entrenado, se evalúa en el conjunto de datos de prueba.
_, accuracy = model.evaluate(testX, testy, batch_size=batch_size, verbose=0)
  1. Resumen de los Resultados: El rendimiento del modelo se resume calculando y reportando la media y la desviación estándar del rendimiento.
def summarize_results(scores):
    print(scores)
    m, s = mean(scores), std(scores)
    print('Accuracy: %.3f%% (+/-%.3f)' % (m, s))

Este ejercicio te ayudará a entender cómo desarrollar un modelo LSTM para la clasificación de series temporales, específicamente para el reconocimiento de actividades humanas utilizando datos de series temporales.

Ten en cuenta que debes tener las bibliotecas necesarias instaladas en tu entorno de Python y también descargar el conjunto de datos del Repositorio de Aprendizaje Automático de la UCI para realizar este ejercicio.

Conclusión del Capítulo 11

A medida que cerramos el capítulo sobre Redes Neuronales Recurrentes (RNNs), es importante reflexionar sobre el viaje que hemos emprendido para comprender esta clase de redes neuronales poderosa y versátil. Comenzamos con los conceptos básicos, introduciendo el concepto de RNNs y su capacidad única para procesar datos secuenciales. Esta capacidad hace que las RNNs sean particularmente útiles para tareas que involucran datos de series temporales, procesamiento de lenguaje natural y más.

Profundizamos en el funcionamiento interno de las RNNs, discutiendo la arquitectura y el flujo de información a través de pasos de tiempo. Aprendimos sobre los desafíos que surgen al entrenar RNNs, como los problemas de gradiente que desaparece y explota, y cómo técnicas como el recorte de gradientes y las unidades recurrentes con compuertas (GRUs) y las celdas de memoria a corto y largo plazo (LSTM) ayudan a mitigar estos problemas.

Luego, avanzamos hacia la implementación práctica de RNNs utilizando marcos populares de aprendizaje profundo: TensorFlow, Keras y PyTorch. Vimos de primera mano cómo estas bibliotecas abstraen gran parte de la complejidad involucrada en la construcción y el entrenamiento de RNNs, lo que nos permite centrarnos en el diseño de alto nivel de nuestros modelos. También aprendimos cómo guardar y cargar nuestros modelos entrenados, una habilidad esencial para cualquier profesional de aprendizaje automático.

A continuación, exploramos la amplia gama de aplicaciones de las RNNs. Desde la generación de texto, el análisis de sentimientos y la traducción automática, hasta el reconocimiento de voz, la composición musical e incluso la predicción de precios de acciones, la versatilidad de las RNNs es realmente asombrosa. También discutimos las limitaciones de las RNNs y la importancia de elegir la herramienta adecuada para la tarea en cuestión.

Finalmente, pusimos en práctica nuestros conocimientos, trabajando a través de una serie de ejercicios diseñados para reforzar lo que hemos aprendido y proporcionar experiencia práctica en la implementación de RNNs. Estos ejercicios no solo pusieron a prueba nuestra comprensión del material, sino que también nos brindaron la oportunidad de experimentar y aprender a través del ensayo y error, que es a menudo donde ocurre el aprendizaje más profundo.

A medida que avanzamos, es importante recordar que si bien las RNNs son una herramienta poderosa, son solo una pieza del rompecabezas del aprendizaje automático. Cada tipo de red neuronal que estudiamos, cada algoritmo que aprendemos, se suma a nuestro conjunto de herramientas y nos capacita para abordar desafíos de aprendizaje automático cada vez más complejos y diversos. A medida que continuamos nuestro viaje en el mundo del aprendizaje profundo, llevemos adelante la curiosidad, la creatividad y el pensamiento crítico que hemos cultivado en este capítulo. El camino por delante está lleno de emocionantes posibilidades, y espero explorarlas juntos en los próximos capítulos.

11.4 Ejercicio Práctico

Utilizaremos Python y la biblioteca Keras para crear un modelo de Memoria a Corto y Largo Plazo (LSTM) para el reconocimiento de actividades humanas.

El ejercicio involucra los siguientes pasos:

  1. Carga de Datos: Utilizaremos el conjunto de datos 'Activity Recognition Using Smart Phones Dataset' disponible en el Repositorio de Aprendizaje Automático de la UCI. El conjunto de datos contiene datos de acelerómetro y giroscopio registrados desde teléfonos inteligentes mientras los usuarios realizaban diferentes actividades como caminar, sentarse, estar de pie, etc.
def load_file(filepath):
    dataframe = read_csv(filepath, header=None, delim_whitespace=True)
    return dataframe.values
  1. Preprocesamiento de Datos: Los datos brutos se preprocesan en ventanas fijas de 2.56 segundos (128 puntos de datos) con un 50% de traslape. Los datos del acelerómetro se dividen en componentes de gravedad (total) y movimiento del cuerpo.
def load_group(filenames, prefix=''):
    loaded = list()
    for name in filenames:
        data = load_file(prefix + name)
        loaded.append(data)
    loaded = dstack(loaded)
    return loaded
  1. Construcción del Modelo: Construiremos un modelo LSTM utilizando Keras. El modelo tendrá una única capa oculta LSTM, seguida de una capa de dropout para reducir el sobreajuste, y una capa densa completamente conectada para interpretar las características extraídas por la capa oculta LSTM. Finalmente, se utilizará una capa de salida densa para hacer predicciones.
model = Sequential()
model.add(LSTM(100, input_shape=(n_timesteps,n_features)))
model.add(Dropout(0.5))
model.add(Dense(100, activation='relu'))
model.add(Dense(n_outputs, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
  1. Entrenamiento del Modelo: El modelo se entrena durante un número fijo de épocas (por ejemplo, 15), y se utilizará un tamaño de lote de 64 muestras.
model.fit(trainX, trainy, epochs=epochs, batch_size=batch_size, verbose=verbose)
  1. Evaluación del Modelo: Una vez que el modelo está entrenado, se evalúa en el conjunto de datos de prueba.
_, accuracy = model.evaluate(testX, testy, batch_size=batch_size, verbose=0)
  1. Resumen de los Resultados: El rendimiento del modelo se resume calculando y reportando la media y la desviación estándar del rendimiento.
def summarize_results(scores):
    print(scores)
    m, s = mean(scores), std(scores)
    print('Accuracy: %.3f%% (+/-%.3f)' % (m, s))

Este ejercicio te ayudará a entender cómo desarrollar un modelo LSTM para la clasificación de series temporales, específicamente para el reconocimiento de actividades humanas utilizando datos de series temporales.

Ten en cuenta que debes tener las bibliotecas necesarias instaladas en tu entorno de Python y también descargar el conjunto de datos del Repositorio de Aprendizaje Automático de la UCI para realizar este ejercicio.

Conclusión del Capítulo 11

A medida que cerramos el capítulo sobre Redes Neuronales Recurrentes (RNNs), es importante reflexionar sobre el viaje que hemos emprendido para comprender esta clase de redes neuronales poderosa y versátil. Comenzamos con los conceptos básicos, introduciendo el concepto de RNNs y su capacidad única para procesar datos secuenciales. Esta capacidad hace que las RNNs sean particularmente útiles para tareas que involucran datos de series temporales, procesamiento de lenguaje natural y más.

Profundizamos en el funcionamiento interno de las RNNs, discutiendo la arquitectura y el flujo de información a través de pasos de tiempo. Aprendimos sobre los desafíos que surgen al entrenar RNNs, como los problemas de gradiente que desaparece y explota, y cómo técnicas como el recorte de gradientes y las unidades recurrentes con compuertas (GRUs) y las celdas de memoria a corto y largo plazo (LSTM) ayudan a mitigar estos problemas.

Luego, avanzamos hacia la implementación práctica de RNNs utilizando marcos populares de aprendizaje profundo: TensorFlow, Keras y PyTorch. Vimos de primera mano cómo estas bibliotecas abstraen gran parte de la complejidad involucrada en la construcción y el entrenamiento de RNNs, lo que nos permite centrarnos en el diseño de alto nivel de nuestros modelos. También aprendimos cómo guardar y cargar nuestros modelos entrenados, una habilidad esencial para cualquier profesional de aprendizaje automático.

A continuación, exploramos la amplia gama de aplicaciones de las RNNs. Desde la generación de texto, el análisis de sentimientos y la traducción automática, hasta el reconocimiento de voz, la composición musical e incluso la predicción de precios de acciones, la versatilidad de las RNNs es realmente asombrosa. También discutimos las limitaciones de las RNNs y la importancia de elegir la herramienta adecuada para la tarea en cuestión.

Finalmente, pusimos en práctica nuestros conocimientos, trabajando a través de una serie de ejercicios diseñados para reforzar lo que hemos aprendido y proporcionar experiencia práctica en la implementación de RNNs. Estos ejercicios no solo pusieron a prueba nuestra comprensión del material, sino que también nos brindaron la oportunidad de experimentar y aprender a través del ensayo y error, que es a menudo donde ocurre el aprendizaje más profundo.

A medida que avanzamos, es importante recordar que si bien las RNNs son una herramienta poderosa, son solo una pieza del rompecabezas del aprendizaje automático. Cada tipo de red neuronal que estudiamos, cada algoritmo que aprendemos, se suma a nuestro conjunto de herramientas y nos capacita para abordar desafíos de aprendizaje automático cada vez más complejos y diversos. A medida que continuamos nuestro viaje en el mundo del aprendizaje profundo, llevemos adelante la curiosidad, la creatividad y el pensamiento crítico que hemos cultivado en este capítulo. El camino por delante está lleno de emocionantes posibilidades, y espero explorarlas juntos en los próximos capítulos.

11.4 Ejercicio Práctico

Utilizaremos Python y la biblioteca Keras para crear un modelo de Memoria a Corto y Largo Plazo (LSTM) para el reconocimiento de actividades humanas.

El ejercicio involucra los siguientes pasos:

  1. Carga de Datos: Utilizaremos el conjunto de datos 'Activity Recognition Using Smart Phones Dataset' disponible en el Repositorio de Aprendizaje Automático de la UCI. El conjunto de datos contiene datos de acelerómetro y giroscopio registrados desde teléfonos inteligentes mientras los usuarios realizaban diferentes actividades como caminar, sentarse, estar de pie, etc.
def load_file(filepath):
    dataframe = read_csv(filepath, header=None, delim_whitespace=True)
    return dataframe.values
  1. Preprocesamiento de Datos: Los datos brutos se preprocesan en ventanas fijas de 2.56 segundos (128 puntos de datos) con un 50% de traslape. Los datos del acelerómetro se dividen en componentes de gravedad (total) y movimiento del cuerpo.
def load_group(filenames, prefix=''):
    loaded = list()
    for name in filenames:
        data = load_file(prefix + name)
        loaded.append(data)
    loaded = dstack(loaded)
    return loaded
  1. Construcción del Modelo: Construiremos un modelo LSTM utilizando Keras. El modelo tendrá una única capa oculta LSTM, seguida de una capa de dropout para reducir el sobreajuste, y una capa densa completamente conectada para interpretar las características extraídas por la capa oculta LSTM. Finalmente, se utilizará una capa de salida densa para hacer predicciones.
model = Sequential()
model.add(LSTM(100, input_shape=(n_timesteps,n_features)))
model.add(Dropout(0.5))
model.add(Dense(100, activation='relu'))
model.add(Dense(n_outputs, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
  1. Entrenamiento del Modelo: El modelo se entrena durante un número fijo de épocas (por ejemplo, 15), y se utilizará un tamaño de lote de 64 muestras.
model.fit(trainX, trainy, epochs=epochs, batch_size=batch_size, verbose=verbose)
  1. Evaluación del Modelo: Una vez que el modelo está entrenado, se evalúa en el conjunto de datos de prueba.
_, accuracy = model.evaluate(testX, testy, batch_size=batch_size, verbose=0)
  1. Resumen de los Resultados: El rendimiento del modelo se resume calculando y reportando la media y la desviación estándar del rendimiento.
def summarize_results(scores):
    print(scores)
    m, s = mean(scores), std(scores)
    print('Accuracy: %.3f%% (+/-%.3f)' % (m, s))

Este ejercicio te ayudará a entender cómo desarrollar un modelo LSTM para la clasificación de series temporales, específicamente para el reconocimiento de actividades humanas utilizando datos de series temporales.

Ten en cuenta que debes tener las bibliotecas necesarias instaladas en tu entorno de Python y también descargar el conjunto de datos del Repositorio de Aprendizaje Automático de la UCI para realizar este ejercicio.

Conclusión del Capítulo 11

A medida que cerramos el capítulo sobre Redes Neuronales Recurrentes (RNNs), es importante reflexionar sobre el viaje que hemos emprendido para comprender esta clase de redes neuronales poderosa y versátil. Comenzamos con los conceptos básicos, introduciendo el concepto de RNNs y su capacidad única para procesar datos secuenciales. Esta capacidad hace que las RNNs sean particularmente útiles para tareas que involucran datos de series temporales, procesamiento de lenguaje natural y más.

Profundizamos en el funcionamiento interno de las RNNs, discutiendo la arquitectura y el flujo de información a través de pasos de tiempo. Aprendimos sobre los desafíos que surgen al entrenar RNNs, como los problemas de gradiente que desaparece y explota, y cómo técnicas como el recorte de gradientes y las unidades recurrentes con compuertas (GRUs) y las celdas de memoria a corto y largo plazo (LSTM) ayudan a mitigar estos problemas.

Luego, avanzamos hacia la implementación práctica de RNNs utilizando marcos populares de aprendizaje profundo: TensorFlow, Keras y PyTorch. Vimos de primera mano cómo estas bibliotecas abstraen gran parte de la complejidad involucrada en la construcción y el entrenamiento de RNNs, lo que nos permite centrarnos en el diseño de alto nivel de nuestros modelos. También aprendimos cómo guardar y cargar nuestros modelos entrenados, una habilidad esencial para cualquier profesional de aprendizaje automático.

A continuación, exploramos la amplia gama de aplicaciones de las RNNs. Desde la generación de texto, el análisis de sentimientos y la traducción automática, hasta el reconocimiento de voz, la composición musical e incluso la predicción de precios de acciones, la versatilidad de las RNNs es realmente asombrosa. También discutimos las limitaciones de las RNNs y la importancia de elegir la herramienta adecuada para la tarea en cuestión.

Finalmente, pusimos en práctica nuestros conocimientos, trabajando a través de una serie de ejercicios diseñados para reforzar lo que hemos aprendido y proporcionar experiencia práctica en la implementación de RNNs. Estos ejercicios no solo pusieron a prueba nuestra comprensión del material, sino que también nos brindaron la oportunidad de experimentar y aprender a través del ensayo y error, que es a menudo donde ocurre el aprendizaje más profundo.

A medida que avanzamos, es importante recordar que si bien las RNNs son una herramienta poderosa, son solo una pieza del rompecabezas del aprendizaje automático. Cada tipo de red neuronal que estudiamos, cada algoritmo que aprendemos, se suma a nuestro conjunto de herramientas y nos capacita para abordar desafíos de aprendizaje automático cada vez más complejos y diversos. A medida que continuamos nuestro viaje en el mundo del aprendizaje profundo, llevemos adelante la curiosidad, la creatividad y el pensamiento crítico que hemos cultivado en este capítulo. El camino por delante está lleno de emocionantes posibilidades, y espero explorarlas juntos en los próximos capítulos.

11.4 Ejercicio Práctico

Utilizaremos Python y la biblioteca Keras para crear un modelo de Memoria a Corto y Largo Plazo (LSTM) para el reconocimiento de actividades humanas.

El ejercicio involucra los siguientes pasos:

  1. Carga de Datos: Utilizaremos el conjunto de datos 'Activity Recognition Using Smart Phones Dataset' disponible en el Repositorio de Aprendizaje Automático de la UCI. El conjunto de datos contiene datos de acelerómetro y giroscopio registrados desde teléfonos inteligentes mientras los usuarios realizaban diferentes actividades como caminar, sentarse, estar de pie, etc.
def load_file(filepath):
    dataframe = read_csv(filepath, header=None, delim_whitespace=True)
    return dataframe.values
  1. Preprocesamiento de Datos: Los datos brutos se preprocesan en ventanas fijas de 2.56 segundos (128 puntos de datos) con un 50% de traslape. Los datos del acelerómetro se dividen en componentes de gravedad (total) y movimiento del cuerpo.
def load_group(filenames, prefix=''):
    loaded = list()
    for name in filenames:
        data = load_file(prefix + name)
        loaded.append(data)
    loaded = dstack(loaded)
    return loaded
  1. Construcción del Modelo: Construiremos un modelo LSTM utilizando Keras. El modelo tendrá una única capa oculta LSTM, seguida de una capa de dropout para reducir el sobreajuste, y una capa densa completamente conectada para interpretar las características extraídas por la capa oculta LSTM. Finalmente, se utilizará una capa de salida densa para hacer predicciones.
model = Sequential()
model.add(LSTM(100, input_shape=(n_timesteps,n_features)))
model.add(Dropout(0.5))
model.add(Dense(100, activation='relu'))
model.add(Dense(n_outputs, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
  1. Entrenamiento del Modelo: El modelo se entrena durante un número fijo de épocas (por ejemplo, 15), y se utilizará un tamaño de lote de 64 muestras.
model.fit(trainX, trainy, epochs=epochs, batch_size=batch_size, verbose=verbose)
  1. Evaluación del Modelo: Una vez que el modelo está entrenado, se evalúa en el conjunto de datos de prueba.
_, accuracy = model.evaluate(testX, testy, batch_size=batch_size, verbose=0)
  1. Resumen de los Resultados: El rendimiento del modelo se resume calculando y reportando la media y la desviación estándar del rendimiento.
def summarize_results(scores):
    print(scores)
    m, s = mean(scores), std(scores)
    print('Accuracy: %.3f%% (+/-%.3f)' % (m, s))

Este ejercicio te ayudará a entender cómo desarrollar un modelo LSTM para la clasificación de series temporales, específicamente para el reconocimiento de actividades humanas utilizando datos de series temporales.

Ten en cuenta que debes tener las bibliotecas necesarias instaladas en tu entorno de Python y también descargar el conjunto de datos del Repositorio de Aprendizaje Automático de la UCI para realizar este ejercicio.

Conclusión del Capítulo 11

A medida que cerramos el capítulo sobre Redes Neuronales Recurrentes (RNNs), es importante reflexionar sobre el viaje que hemos emprendido para comprender esta clase de redes neuronales poderosa y versátil. Comenzamos con los conceptos básicos, introduciendo el concepto de RNNs y su capacidad única para procesar datos secuenciales. Esta capacidad hace que las RNNs sean particularmente útiles para tareas que involucran datos de series temporales, procesamiento de lenguaje natural y más.

Profundizamos en el funcionamiento interno de las RNNs, discutiendo la arquitectura y el flujo de información a través de pasos de tiempo. Aprendimos sobre los desafíos que surgen al entrenar RNNs, como los problemas de gradiente que desaparece y explota, y cómo técnicas como el recorte de gradientes y las unidades recurrentes con compuertas (GRUs) y las celdas de memoria a corto y largo plazo (LSTM) ayudan a mitigar estos problemas.

Luego, avanzamos hacia la implementación práctica de RNNs utilizando marcos populares de aprendizaje profundo: TensorFlow, Keras y PyTorch. Vimos de primera mano cómo estas bibliotecas abstraen gran parte de la complejidad involucrada en la construcción y el entrenamiento de RNNs, lo que nos permite centrarnos en el diseño de alto nivel de nuestros modelos. También aprendimos cómo guardar y cargar nuestros modelos entrenados, una habilidad esencial para cualquier profesional de aprendizaje automático.

A continuación, exploramos la amplia gama de aplicaciones de las RNNs. Desde la generación de texto, el análisis de sentimientos y la traducción automática, hasta el reconocimiento de voz, la composición musical e incluso la predicción de precios de acciones, la versatilidad de las RNNs es realmente asombrosa. También discutimos las limitaciones de las RNNs y la importancia de elegir la herramienta adecuada para la tarea en cuestión.

Finalmente, pusimos en práctica nuestros conocimientos, trabajando a través de una serie de ejercicios diseñados para reforzar lo que hemos aprendido y proporcionar experiencia práctica en la implementación de RNNs. Estos ejercicios no solo pusieron a prueba nuestra comprensión del material, sino que también nos brindaron la oportunidad de experimentar y aprender a través del ensayo y error, que es a menudo donde ocurre el aprendizaje más profundo.

A medida que avanzamos, es importante recordar que si bien las RNNs son una herramienta poderosa, son solo una pieza del rompecabezas del aprendizaje automático. Cada tipo de red neuronal que estudiamos, cada algoritmo que aprendemos, se suma a nuestro conjunto de herramientas y nos capacita para abordar desafíos de aprendizaje automático cada vez más complejos y diversos. A medida que continuamos nuestro viaje en el mundo del aprendizaje profundo, llevemos adelante la curiosidad, la creatividad y el pensamiento crítico que hemos cultivado en este capítulo. El camino por delante está lleno de emocionantes posibilidades, y espero explorarlas juntos en los próximos capítulos.