TypeError: ToTensor.__init__() takes 1 positional argument but 2 were given

I have this code:

import torch
import torchvision
from torchvision import transforms, datasets

train = datasets.MNIST("", train = True, download = True, transform = transforms.Compose([transforms.ToTensor]))
test = datasets.MNIST("", train = False, download = True, transform = transforms.Compose([transforms.ToTensor]))

trainset = torch.utils.data.DataLoader(train, batch_size = 10, shuffle = True)
testset = torch.utils.data.DataLoader(test, batch_size = 10, shuffle = True)

for data in trainset:
print(data)
break

But I am getting this error:

TypeError: ToTensor.init() takes 1 positional argument but 2 were given

You are missing the parenthesis when passing the ToTensor() transform

transform = transforms.Compose([
              transforms.ToTensor()
            ])

This should work.

import torch
import torchvision
from torchvision import transforms, datasets

train = datasets.MNIST("", train = True, download = True, transform = transforms.Compose([transforms.ToTensor()]))
test = datasets.MNIST("", train = False, download = True, transform = transforms.Compose([transforms.ToTensor()]))

trainset = torch.utils.data.DataLoader(train, batch_size = 10, shuffle = True)
testset = torch.utils.data.DataLoader(test, batch_size = 10, shuffle = True)

for data in trainset:
    print(data)
    break

Hope this helps :smile:

2 Likes

Thank you this worked.

1 Like