I am having a cryptic issue upon loading data from a custom Dataset with the Dataloader when switching from python 2.7 to 3.5. See below the incriminated piece of code, where train_set and test_set are custom Dataset objects that I use to train/eval a parallelized model in a multi-gpu environment:
train_loader = DataLoader(train_set,batch_size=batch_size, shuffle = True,num_workers=8*self.GPU)
test_loader = DataLoader(test_set, batch_size=batch_size, shuffle=True,num_workers=8*self.GPU)
for n in list(range(nb_epoch + 1)):
train(n,train_loader,test_loader)
def train(self,epoch,train_loader,test_loader):
print ("**** Epoch ",epoch,"********")
for i, batch in enumerate(train_loader):
batch_maps = batch['map']
batch_labels = batch['label']
Here is the error I get:
for i, batch in enumerate(train_loader):
File "/home/julien/.local/lib/python3.5/site-packages/torch/utils/data/dataloader.py", line 281, in __next__
return self._process_next_batch(batch)
File "/home/julien/.local/lib/python3.5/site-packages/torch/utils/data/dataloader.py", line 301, in _process_next_batch
raise batch.exc_type(batch.exc_msg)
TypeError: function takes exactly 5 arguments (1 given)
When I run the same exact code with python 2.7, everything works fine. Any clue?