In [ ]:
# https://stanford.edu/~shervine/blog/pytorch-how-to-generate-data-parallel
import torch 
from torch import nn
from torch.utils import data
import os
import torchvision
from torchvision import datasets, transforms, models
import torchvision.transforms.functional as tf
from PIL import Image
import os
import numpy
import random
import matplotlib.pyplot as plt 

%matplotlib

In [9]:
class Dataset(data.Dataset):
    def __init__(self, list_images, labels, folder_name ="./"):
        self.list_images = list_images
        self.labels = labels
        self.folder_name = folder_name
        
    def __len__(self):
        return len (self.list_images)
    
    def __load_images__(self, image_file_name ):
        img = Image.open(os.path.join(self.folder_name,image_file_name)).resize((224, 224), resample=0)
        img = torch.Tensor((numpy.asarray(img).transpose(2,0,1))/255.0)
        return img
    
    def __getitem__(self, index):
        file_name = self.__load_images__(self.list_images[index])
        label = self.labels[index]
        return file_name, torch.tensor(label)

In [10]:
image_list = os.listdir("data/train/")
labels = []
for i in image_list:
    if i[:3] == 'dog':
        labels.append(1)
    else:
        labels.append(0)

In [11]:
training_set = Dataset(image_list, labels, folder_name="data/train/")

In [15]:
training_generator = data.DataLoader(training_set, batch_size=64, shuffle=True, num_workers=6)

In [ ]:


In [16]:



torch.Size([64, 3, 224, 224]) torch.Size([64])
tensor([1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1,
        0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
        1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0])

In [ ]: