Cargando datos en Pytorch

En este artículo, discutiremos cómo cargar diferentes tipos de datos en PyTorch.

Para fines de demostración, Pytorch viene con 3 divisiones de conjuntos de datos, a saber, torchaudio, torchvision y torchtext. Podemos aprovechar estos conjuntos de datos de demostración para comprender cómo cargar datos de sonido, imagen y texto mediante Pytorch.

Conjunto de datos de Torchaudio

Cargando el conjunto de datos de audio de demostración yes_no en torchaudio usando Pytorch.

El conjunto de datos Yes_No es un conjunto de datos de forma de onda de audio, que tiene valores almacenados en forma de tuplas de 3 valores, a saber, forma de onda, frecuencia de muestreo, etiquetas, donde la forma de onda representa la señal de audio, la frecuencia de muestreo representa la frecuencia y la etiqueta representa si Sí o No.

  • Importe los paquetes torch y torchaudio. (Instale usando pip install torchaudio, si es necesario)
  • Utilice la función torchaudio con el descriptor de acceso de conjuntos de datos, seguido del nombre del conjunto de datos.
  • Ahora, pase la ruta en la que se debe almacenar el conjunto de datos y especifique download = True para descargar el conjunto de datos. Aquí, ‘./’ especifica el directorio raíz.
  • Ahora, itere sobre el conjunto de datos cargado usando un bucle for y acceda a los 3 valores almacenados en una tupla para ver la muestra del conjunto de datos.

Para cargar sus datos personalizados:

Sintaxis: torch.utils.data.DataLoader(data, batch_size, shuffle)

Parámetros:

  • datos: conjunto de datos de audio o la ruta al conjunto de datos de audio
  • lote_tamaño: para conjuntos de datos grandes, lote_tamaño especifica cuántos datos cargar a la vez
  • shuffle – un tipo bool. Establecerlo en True mezclará los datos.

Python3

# import the torch and torchaudio dataset packages.
import torch
import torchaudio
  
# access the dataset in torchaudio package using
# datasets followed by dataset name.
# './' makes sure that the dataset is stored
# in a root directory.
# download = True ensures that the
# data gets downloaded
yesno_data = torchaudio.datasets.YESNO('./', 
                                       download=True)
  
# loading the first 5 data from yesno_data
for i in range(5):
    waveform, sample_rate, labels = yesno_data[i]
    print("Waveform: {}\nSample rate: {}\nLabels: {}".format(
        waveform, sample_rate, labels))

Producción:

Conjunto de datos Torchvision

Cargando el conjunto de datos de visión ImageNet de demostración en torchvision usando Pytorch. Haga clic aquí para descargar el conjunto de datos registrándose.

Python3

# import the torch and
# torchvision dataset packages.
import torch
import torchvision
  
# access the dataset in torchvision package using
# .datasets followed by dataset name.
imagenet_data = torchvision.datasets.ImageNet('path/to/imagenet_root/')

Explicación del código:

  • El procedimiento es casi el mismo que cargar los datos de audio.
  • Aquí, en lugar de torchaudio, se debe importar torchvision.
  • Utilice la función torchvision con el descriptor de acceso de conjuntos de datos, seguido del nombre del conjunto de datos.
  • Ahora, pase la ruta en la que está presente el conjunto de datos. Dado que el conjunto de datos de ImageNet ya no es de acceso público, descargue los datos raíz en su sistema local y pase la ruta a esta función. Esto cargará cómodamente los datos de visión.

Para cargar sus datos de imagen personalizados, use torch.utils.data.DataLoader(data, batch_size, shuffle) como se mencionó anteriormente.

Python3

# import necessary function
# from torchvision package
from torchvision import transforms, datasets
import matplotlib.pyplot as plt
  
# specify the image dataset folder
data_dir = r'path to dataset\train'
  
# perform some transformations like resizing,
# centring and tensorconversion
# using transforms function
transform = transforms.Compose(
    [transforms.Resize(255),
     transforms.CenterCrop(224),
     transforms.ToTensor()])
  
# pass the image data folder and
# transform function to the datasets
# .imagefolder function
dataset = datasets.ImageFolder(data_dir, 
                               transform=transform)
  
# now use dataloder function load the
# dataset in the specified transformation.
dataloader = torch.utils.data.DataLoader(dataset,
                                         batch_size=32,
                                         shuffle=True)
  
# iter function iterates through all the
# images and labels and stores in two variables
images, labels = next(iter(dataloader))
  
# print the total no of samples
print('Number of samples: ', len(images))
image = images[2][0]  # load 3rd sample
  
# visualize the image
plt.imshow(image, cmap='gray')
  
# print the size of image
print("Image Size: ", image.size())
  
# print the label
print(label)

Producción:

Image size: torch.Size([224,224])
tensor([0, 0, 0, 1, 1, 1])

Conjunto de datos Torchtext

Cargando el conjunto de datos de texto IMDB de demostración en torchtext usando Pytorch. Para cargar sus datos de texto personalizados, usamos el método torch.utils.data.DataLoader().

Sintaxis: torch.utils.data.DataLoader(‘ruta a/imdb_data’, batch_size, shuffle=True)

Explicación del código:

  • El procedimiento es casi el mismo que cargar la imagen y los datos de audio.
  • Aquí, en lugar de torchvision, se debe importar torchtext.
  • Use la función torchtext con el descriptor de acceso de conjuntos de datos, seguido del nombre del conjunto de datos (IMDB).
  • Ahora, pase la función de división a la función torchtext para dividir el conjunto de datos para entrenar y probar datos.
  • Ahora defina una función para dividir cada línea en el corpus para separar tokens iterando cada línea en el corpus como se muestra. De esta forma, podemos cargar fácilmente datos de texto usando Pytorch.

Python3

# import the torch and torchtext dataset packages.
import torch
import torchtext
  
# access the dataset in torchtext package
# using .datasets followed by dataset name.
text_data = torchtext.datasets.IMDB(split='train')
  
# define a function to tokenize
# the words in the corpus
def tokenize(label, line):
    return line.split()
  
  
# define a empty list to store
# the tokenized words
tokens = []
  
# iterate over the text_data and
# tokenize each line and store
# it in the list tokens
for label, line in text_data:
    tokens += tokenize(label, line)
  
print('The total no. of tokens in imdb dataset is',
      len(tokens))

Producción:

Publicación traducida automáticamente

Artículo escrito por jssuriyakumar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *