Traceback (most recent call last):
File “train.py”, line 55, in
for iteration, batch in enumerate(data_loader):
File “/home/vishal/anaconda3/lib/python3.6/site-packages/torch/utils/data/dataloader.py”, line 251, in iter
return DataLoaderIter(self)
File “/home/vishal/anaconda3/lib/python3.6/site-packages/torch/utils/data/dataloader.py”, line 103, in init
self.sample_iter = iter(self.sampler)
File “/home/vishal/anaconda3/lib/python3.6/site-packages/torch/utils/data/sampler.py”, line 50, in iter
return iter(torch.randperm(self.num_samples).long())
RuntimeError: must be strictly positive at /home/soumith/local/builder/wheel/pytorch-src/torch/lib/TH/generic/THTensorMath.c:1473
Exception ignored in: <bound method DataLoaderIter.del of <torch.utils.data.dataloader.DataLoaderIter object at 0x7fc28cc66898>>
Traceback (most recent call last):
File “/home/vishal/anaconda3/lib/python3.6/site-packages/torch/utils/data/dataloader.py”, line 212, in del
self._shutdown_workers()
File “/home/vishal/anaconda3/lib/python3.6/site-packages/torch/utils/data/dataloader.py”, line 204, in _shutdown_workers
if not self.shutdown:
AttributeError: ‘DataLoaderIter’ object has no attribute ‘shutdown’
Without any context, we cannot reply with an answer. What are you looking for, is there a script to reproduce this error?
I am trying to implemen fast neural style. The training function is here
for epoch in range(args.epochs):
for iteration, batch in enumerate(data_loader):
x = Variable(batch[0])
x = batch_rgb_to_bgr(x)
if args.cuda:
x = x.cuda()
y_hat = model(x)
xc = Variable(x.clone())
optimizer.zero_grad()
loss = loss_function(args.content_weight, args.style_weight, xc, xs, y_hat)
loss.backward()
optimizer.step()
print("===> Epoch[{}]({}/{}): Loss: {:.4f}".format(epoch, iteration, len(data_loader), loss.data[0]))
torch.save(model.state_dict(), 'model_{}.pth'.format(epoch))
torch.save(model.state_dict(), 'model.pth')
and the dataloader code
train_set = datasets.ImageFolder(args.dataset_path, transform)
data_loader = DataLoader(dataset=train_set, num_workers=args.threads, batch_size=args.batchSize, shuffle=True)
The problem is that your train_set has 0 images.
I’ve figured it out from this part of your error:
RuntimeError: must be strictly positive at /home/soumith/local/builder/wheel/pytorch-src/torch/lib/TH/generic/THTensorMath.c:1473
You can check this by doing:
print(len(train_set))
datasets.ImageFolder will pick up all images from subfolders of dataset_path
, but not in the root directory of dataset_path
itself. Maybe that’s your mistake?
for example if dataset_path
has:
a.png
cat/b.png
dog/c.png
ImageFolder
will have length=2 and will have 2 classes ['cat', 'dog']
with indices [0, 1]
and will have two images b.png, c.png
in it.
It will not have a.png
Also, another thing – ImageFolder
will only pick up the following image extensions:
Hope that helps figure out your issue.