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]:
In [ ]: