Loading Data in Pytorch - GeeksforGeeks

04 Jan, 2022
In this article, we will discuss how to load different kinds of data in PyTorch.
For demonstration purposes, Pytorch comes with 3 divisions of datasets namely torchaudio, torchvision, and torchtext. We can leverage these demo datasets to understand how to load Sound, Image, and text data using Pytorch.
Loading demo yes_no audio dataset in torchaudio using Pytorch.
Yes_No dataset is an audio waveform dataset, which has values stored in form of tuples of 3 values namely waveform, sample_rate, labels, where waveform represents the audio signal, sample_rate represents the frequency and label represent whether Yes or No.
Import the torch and torchaudio packages. (Install using pip install torchaudio, if necessary)
Use the torchaudio function with the datasets accessor, followed by the dataset name.
Now, pass the path in which the dataset has to be stored and specify download = True to download the dataset. Here, ‘./’ specifies the root directory.
Now, iterate over the loaded dataset using a for loop, and access the 3 values stored in a tuple to see the sample of the dataset.
To load your custom data:
Syntax: torch.utils.data.DataLoader(data, batch_size, shuffle)
Parameters:
data – audio dataset or the path to the audio dataset
batch_size – for large dataset, batch_size specifies how much data to load at once
shuffle – a bool type. Setting it to True will shuffle the data.
Python3
# import the torch and torchaudio dataset packages.import torchimport 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 downloadedyesno_data = torchaudio.datasets.YESNO('./',                                        download=True)  # loading the first 5 data from yesno_datafor i in range(5):    waveform, sample_rate, labels = yesno_data[i]    print("Waveform: {}\nSample rate: {}\nLabels: {}".format(        waveform, sample_rate, labels))
Output:
Loading demo ImageNet vision dataset in torchvision using Pytorch. Click here to download the dataset by signing up.
Python3
# import the torch and# torchvision dataset packages.import torchimport torchvision  # access the dataset in torchvision package using# .datasets followed by dataset name.imagenet_data = torchvision.datasets.ImageNet('path/to/imagenet_root/')
Code Explanation:
The procedure is almost the same as loading the audio data.
Here, instead of torchaudio, torchvision has to be imported.
Use the torchvision function with the datasets accessor, followed by the dataset name.
Now, pass the path in which the dataset is present. Since the ImageNet dataset is no longer publicly accessible, download the root data in your local system and pass the path to this function. This will comfortably load the vision data.
To load your custom image data, use torch.utils.data.DataLoader(data, batch_size, shuffle) as mentioned above.
Python3
# import necessary function# from torchvision packagefrom torchvision import transforms, datasetsimport matplotlib.pyplot as plt  # specify the image dataset folderdata_dir = r'path to dataset\train'  # perform some transformations like resizing,# centring and tensorconversion# using transforms functiontransform = transforms.Compose(    [transforms.Resize(255),     transforms.CenterCrop(224),     transforms.ToTensor()])  # pass the image data folder and# transform function to the datasets# .imagefolder functiondataset = 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 variablesimages, labels = next(iter(dataloader))  # print the total no of samplesprint('Number of samples: ', len(images))image = images[2][0]  # load 3rd sample  # visualize the imageplt.imshow(image, cmap='gray')  # print the size of imageprint("Image Size: ", image.size())  # print the labelprint(label)
Output:
Image size: torch.Size([224,224])
tensor([0, 0, 0, 1, 1, 1])
Loading demo IMDB text dataset in torchtext using Pytorch. To load your custom text data we use  torch.utils.data.DataLoader() method.
Syntax: torch.utils.data.DataLoader(‘path to/imdb_data’, batch_size, shuffle=True)
Code Explanation:
The procedure is almost the same as loading the image and audio data.
Here, instead of torchvision, torchtext has to be imported.
Use the torchtext function with the datasets accessor, followed by dataset name (IMDB).
Now, pass the split function to the torchtext function to split the dataset to train and test data.
Now define a function to split each line in the corpus to separate tokens by iterating each line in the corpus as shown. In this way, we can easily load text data using Pytorch.
Python3
# import the torch and torchtext dataset packages.import torchimport 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 corpusdef tokenize(label, line):    return line.split()    # define a empty list to store# the tokenized wordstokens = []  # iterate over the text_data and# tokenize each line and store# it in the list tokensfor label, line in text_data:    tokens += tokenize(label, line)  print('The total no. of tokens in imdb dataset is',      len(tokens))
Output:
Picked
Python-PyTorch
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
How to Install PIP on Windows ?
How to drop one or multiple columns in Pandas Dataframe
How To Convert Python Dictionary To JSON?
Check if element exists in list in Python
Python | Pandas dataframe.groupby()
Defaultdict in Python
Python | Get unique values from a list
Python Classes and Objects
Python | os.path.join() method
Create a directory in Python