Cargadores de datos

Los cargadores de datos permiten cargar y administrar los datos de manera sencilla y eficiente. Tanto Tensorflow como Pytorch cuentan con métodos de cargadores de datos. En PyTorch, podemos usar el método Dataset para crear una clase que permita administrar los datos.

La clase MyDataset que presentamos aquí toma una dirección de un archivo .csv y carga los datos de este archivo (usando pandas). Permite entonces administrar los datos, accediendo a cada uno de ellos y separando los datos de sus clases.

Para cargar los datos, sólo llamamos a la clase MyDataset y le damos la dirección del archiv .csv que queremos que cargue. Esto genera un objeto que contenga la información de los datos.

Esta clase nos permite visualzar el tamaño de los datos, así como acceder a un dato que le indiquemos para que podamos ver ese dato y su clase.

Mini-lotes

Los cargadores de datos nos permiten trabajar con mini-lotes (mini-batches) que son de suma importancia en el aprendizaje con redes neuronales, pues permiten un aprendizaje más eficiente. En PyTorch, podemos usar DataLoader para administrar los mini-lotes en los datos. De esta forma, podemos administrar el tamaño de los datos e indicar que estos mini-lotes se definan de manera aleatoria en cada época. Necesitamos, pues indicar el tamaño del lote; shuffle=True indica que en cada época, los lotes serán aleatorizados.

El método DataLoader permite manejar la clase Dataset por medio de la propiedad dataset, la cual nos permite hacer lo mismos procesos de la clase MyDataset.

La administración de mini-lotes permite que el modelo de aprendizaje vea sólo $n$ (el tamaño del lote) ejemplos en cada actualización de los parámetros de aprendizaje. Esto mejora el proceso de aprendizaje en redes neuronales, así como su eficiencia, pues procesar mini-lotes tomará menos tiempo que procesar dato por dato.

En cada época, se verán todos los lotes, hasta abarcar el total de datos. Podemos ver aquí el tamaó de lotes de los datos que hemos cargado.

Podemos utilizar la administración de lostes que nos permite el cargador de datos para entrenar más efiecientemente una red neuronal.

Usar un tamaño de lotes de mayor tamaño ahorará tiempo en el procesamiento sin sacrificar la calidad del aprendizaje. Si usamos un lote de tamaño 1, que equivale a procesar ejemplo por ejemplo, el tiempo del entrenamiento será mayor. Si usamos un lote del tamaño del número de datos, que equivale a aprender con todos los datos, el proceso será más rápido, pero muchas veces el aprendizaje será deficiente. Determinar el tamaño óptimo de los lotes es también parte importante del modelo de aprendizaje.