AttributeError: 'Image' object has no attribute 'shape'

I tried to apply RandomErase transform for every images using the following code


my_transforms = transforms.Compose([

  transforms.Resize((192,192)),

  transforms.RandomErasing(p=1),

  transforms.ToTensor(),

  transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))                                    

])

dataset = datasets.ImageFolder(root=DATA_PATH, transform=my_transforms)

I tried to display first image from the dataset using following line

plt.imshow(dataset[0][0].permute(1,2,0))

And I get this error

AttributeError: 'Image' object has no attribute 'shape'

You need to send the

dataset = datasets.ImageFolder(root=DATA_PATH, transform=transform)
data_loader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, shuffle=True, drop_last=True, **kwargs)

You can iterate over the dataset to find the instances

image_sample = next.itere(data_loader)

Still getting the same error. If I remove transforms.RandomErasing(p=1) from my transforms it works. But I need to put random erasing each image.

RandomErasing is a transform on a Tensor, not an Image, per the docs.

You should try again with the transforms in this order:

transforms.ToTensor(),
transforms.RandomErasing(p=1),

Hope this helps!

Yes, that works. Thanks a lot.