Fundamentos de PyTorch
¿Qué necesitas para aprender PyTorch?
¿Por qué usar PyTorch?
Hola, mundo en PyTorch
Creación de Tensores en PyTorch
Debugging de operaciones con tensores
Conversión y operación de tensores con PyTorch
Quiz: Fundamentos de PyTorch
Estructura de modelo de deep learning en PyTorch
Generación y split de datos para entrenamiento de modelo
Estructura de modelo en PyTorch con torch.nn
Entrenamiento, funciones de pérdida y optimizadores
Entrenamiento y visualización de pérdida
Predicción con un modelo de PyTorch entrenado
Quiz: Estructura de modelo de deep learning en PyTorch
Redes neuronales con PyTorch
Datos para clasificación de texto
Procesamiento de datos: tokenización y creación de vocabulario
Procesamiento de datos: preparación del DataLoader()
Creación de modelo de clasificación de texto con PyTorch
Función para entrenamiento
Función para evaluación
Split de datos, pérdida y optimización
Entrenamiento y evaluación de modelo de clasificación de texto
Inferencia utilizando torch.compile(): el presente con PyTorch 2.X
Almacenamiento del modelo con torch.save() y state_dict()
Sube tu modelo de PyTorch a Hugging Face
Carga de modelo de PyTorch con torch.load()
Quiz: Redes neuronales con PyTorch
Cierre del curso
Cierre del curso
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
En la ciencia de datos y el procesamiento del lenguaje natural, la tokenización es un paso esencial para convertir textos en datos que una máquina pueda utilizar. En esta clase, te guiaré para comprender cómo comenzar con esta tarea usando Torch Text, específicamente aplicando tokenización a los textos de DBpedia.
Torch Text es una poderosa biblioteca de PyTorch destinada a facilitar el manejo y la transformación de datos textuales. Nos permite tokenizar textos, crear vocabularios y más. Empezaremos examinando un dataset para familiarizarnos con su estructura antes de avanzar al procesamiento.
train iter
que actuará como iterador sobre los datos ya importados de DBpedia. Esto nos permite visualizar cómo son los textos en bruto.next
, podemos obtener el siguiente elemento del iterador, lo que nos permite observar los datos de nuestro dataset de manera secuencial.train_iter = ...
sample_text = next(train_iter)
La tokenización convierte largas oraciones o fragmentos textuales en piezas más pequeñas. Esto es crucial para que las máquinas puedan trabajar con texto, transformándolo en números y facilitando así la comprensión y el procesamiento automatizado.
GetTokenizer
de Torch Text para la tokenización. Esta función nos proporciona una variedad de tokenizadores predefinidos, incluyendo BasicEnglish
.BasicEnglish
, otros como spaCy
o HuggingFace
también son viables dependiendo de nuestras necesidades.from torchtext.data.utils import get_tokenizer
tokenizador = getTokenizer('basic_english')
Un vocabulario traduce los tokens en números. Esto permite a las máquinas interpretar el texto de manera eficiente.
yieldTokens
que toma un iterador de textos y devuelve los tokens procesados.BuildVocabFromIterator
para crear un mapa de tokens a números enteros, considerando también los tokens desconocidos.from torchtext.vocab import build_vocab_from_iterator
def yield_tokens(data_iter):
for _, text in data_iter:
yield tokenizador(text)
vocabulario = build_vocab_from_iterator(yield_tokens(train_iter), specials=["<unk>"])
vocabulario.set_default_index(vocabulario["<unk>"])
El uso de funciones ayuda a simplificar el proceso de conversión de texto en números. Dos funciones clave son textoPipeline
y labelpipeline
:
texto_pipeline = lambda x: vocabulario(tokenizador(x))
label_pipeline = lambda x: int(x) - 1
Cuando ejecutamos estas herramientas en texto de ejemplo como "Hello, I am Omar", obtenemos una lista de números enteros que representan cada palabra en el vocabulario. Así, logramos que los datos textuales sean aptos para el análisis y modelado.
El viaje hacia el procesamiento y análisis de datos nunca termina. ¡Anímate a seguir explorando el potencial de estas técnicas y herramientas que ofrece Torch Text!
Aportes 8
Preguntas 2
Tuve la duda de cómo funcionaba el tokenizer + vocabulario y traigo mis conclusiones.
El tokenizer simplemente separa las palabras en tokens, y el algoritmo que usemos (en este caso basic_english) determinará qué caracteres tokenizará y que limpiezas y convenciones llevará a cabo (agregar espacios a las puntuaciones, transformar los saltos de linea en espacios sencillos y demás limpiezas) y retornará un array gigante con los cada palabra tokenizada.
El vocab (o vocabulario) por otra parte es especial. El proceso para determinar qué valor numérico pertenece a cada token es directamente proporcional a su frecuencia de aparición. Entre más aparezca un token en un dataset (también llamado text corpus) menor valor tendrá, por eso los conectores suelen tener valores tan bajos.
La razón por la que debemos agregar el <unk> en el vocab es porque únicamente hemos creado los valores de los tokens disponibles en el text corpus, por lo que, si en alguna inferencia usamos texto que no contiene un token válido, debemos tener un mecanismo para encapsularlo.
si tienen el error
ImportError: cannot import name ‘DILL_AVAILABLE’ from ‘torch.utils.data.datapipes.utils.common’
Utilicen
torch.utils.data.datapipes.utils.common.DILL_AVAILABLE = torch.utils._import_utils.dill_available()
antes de
train_iter = iter(DBpedia(split='train'))
Ver el enlace
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?