PyTorch - Getting the 'TypeError: pic should be PIL Image or ndarray. Got <class 'numpy.ndarray'>' error
This happens because of the transformation you use:
self.transform = transforms.Compose([transforms.ToTensor()])
As you can see in the documentation, torchvision.transforms.ToTensor
converts a PIL Image or numpy.ndarray
to tensor. So if you want to use this transformation, your data has to be of one of the above types.
Expanding on @MiriamFarber's answer, you cannot use transforms.ToTensor()
on numpy.ndarray
objects. You can convert numpy
arrays to torch
tensors using torch.from_numpy()
and then cast your tensor to the required datatype.
Eg:
>>> import numpy as np
>>> import torch
>>> np_arr = np.ones((5289, 38))
>>> torch_tensor = torch.from_numpy(np_arr).long()
>>> type(np_arr)
<class 'numpy.ndarray'>
>>> type(torch_tensor)
<class 'torch.Tensor'>