Transforms#

Introducción#

Los datos no siempre vienen en su forma procesada final que se requiere para entrenar algoritmos de aprendizaje automático. Usamos transformaciones para realizar alguna manipulación de los datos y hacerlos aptos para el entrenamiento.

Todos los conjuntos de datos de TorchVision tienen dos parámetros transform para modificar las características y target_transform para modificar las etiquetas- que aceptan llamadas que contienen la lógica de transformación. El módulo torchvision.transforms ofrece varias transformaciones de uso común listas para usar.

Carga de un Dataset#

import torch
from torchvision import datasets
from torchvision.transforms import ToTensor, Lambda
ds = datasets.FashionMNIST(
    root="data",
    train=True,
    download=True,
    transform=ToTensor(), # convierte la imagen a un FloatTensor
    target_transform=Lambda(lambda y: torch.zeros(10, dtype=torch.float).scatter_(0, torch.tensor(y), value=1))# 1-hot
)

Transformaciones#

ToTensor()#

ToTensor convierte una imagen PIL o NumPy ndarray en un FloatTensor. y escala los valores de intensidad de píxeles de la imagen en el rango [0., 1.].

Transformaciones Lambda#

Las transformaciones Lambda aplican cualquier función lambda definida por el usuario. Aquí, definimos una función para convertir el número entero en un tensor codificado en caliente. Primero crea un tensor cero de tamaño 10 (el número de etiquetas en nuestro conjunto de datos) y llama a scatter_, que asigna un valor = 1 en el índice como lo indica la etiqueta y.

Referencias#

  1. Basado en los tutoriales de Pytorch

  2. Deep learning for coders with FastAI and Pytorch