Simple RNN
Ejemplo canónico de una RNN para una tarea más básica, como la predicción de la próxima palabra en una secuencia de texto. Este tipo de tarea ilustra claramente cómo las RNN pueden manejar datos secuenciales.
Importamos los módulos necesarios
Definimos los datos de entrenamiento, que es una cadena de texto.
Obtenemos todas las palabras de nuestro texto
Definimos dos diccionarios de la siguiente manera
Diccionario 1:
{"index": "word"}
Diccionario 1:
{"word": "index"}
que mapean cada palabra única a un índice y viceversa. Esto es útil para convertir palabras en números enteros y viceversa.
Preparación de Datos de Entrada y Salida
Establecemos seq_length
en 3
, lo que significa que vamos a tomar secuencias de 3 caracteres como entrada y tratar de predecir el siguiente carácter.
Creamos dos listas, X
e y
, donde X
contendrá las secuencias de entrada codificadas como números enteros e y
contendrá las palabras de destino codificados de la misma manera. Luego, convertimos estas listas en matrices NumPy
para facilitar el procesamiento.
Creación del Modelo RNN
Creamos el modelo de RNN utilizando el módulo de Keras de TensorFlow. El modelo consta de dos capas:
Una capa
Embedding
que se utiliza para mapear las palabras en vectores de números reales.Una capa
SimpleRNN
con unidades, que toma una secuencia de longitudseq_length
y utiliza la función de activación tangente hiperbólica (tanh
).Una capa
Dense
con un número de unidades igual al número de caracteres únicos en el texto, y utiliza la función de activaciónsoftmax
.
Compilación del Modelo
Definimos la función de pérdida como sparse_categorical_crossentropy
, que se utiliza para problemas de clasificación de varias clases. Y configuramos el optimizador adam
para ajustar los pesos durante el entrenamiento.
Entrenamiento del Modelo
Entrenamos el modelo RNN utilizando los datos de entrada X
y las etiquetas y
durante épocas. Cambie el parámetro de épocas y note el cambio los valores de loss y accuraccy
El modelo aprenderá a predecir el siguiente carácter en una secuencia basándose en los patrones en los datos de entrenamiento.
Generación de Texto
Generamos texto utilizando el modelo entrenado.
Comenzamos con una "semilla" (seed_text
) y, en un bucle, predecimos la siguiente palabra en función de la semilla.
Luego, agregamos el carácter predicho a la semilla y repetimos el proceso veces para generar un texto con dos palabras al texto original.
Remark.
El modelo utiliza las probabilidades de salida de la capa softmax para hacer predicciones.
La longitud de la variable seed_text
debe de ser igual a la definida en la variable seq_length
para evitar errores.
Last updated