I changed my code:
- use transfrom during craeting dataloader
transform = transforms.Compose([
transforms.RandomResizedCrop(224),
transforms.ToTensor(),
])
dataset = ImdbWikiDataset(transform=transform)
dataloader = DataLoader(dataset, batch_size=8, shuffle=True, num_workers=1)
dataloader works fine:
- create the databunch from the pytorch dataloader:
tfms_train, tfms_val = get_transforms()
test_db = DataBunch(dataloader, dataloader, tfms=tfms_train)
test_db.one_batch()
the error msg says: AttributeError: ‘list’ object has no attribute ‘pixel’
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-7-15cf372150e2> in <module>()
----> 1 test_db.one_batch()
~/anaconda3/envs/pytorch_v1/lib/python3.6/site-packages/fastai/basic_data.py in one_batch(self, ds_type, detach, denorm)
132 w = self.num_workers
133 self.num_workers = 0
--> 134 try: x,y = next(iter(dl))
135 finally: self.num_workers = w
136 if detach: x,y = to_detach(x),to_detach(y)
~/anaconda3/envs/pytorch_v1/lib/python3.6/site-packages/fastai/basic_data.py in __iter__(self)
68 for b in self.dl:
69 y = b[1][0] if is_listy(b[1]) else b[1]
---> 70 if not self.skip_size1 or y.size(0) != 1: yield self.proc_batch(b)
71
72 @classmethod
~/anaconda3/envs/pytorch_v1/lib/python3.6/site-packages/fastai/basic_data.py in proc_batch(self, b)
60 "Proces batch `b` of `TensorImage`."
61 b = to_device(b, self.device)
---> 62 for f in listify(self.tfms): b = f(b)
63 return b
64
~/anaconda3/envs/pytorch_v1/lib/python3.6/site-packages/fastai/vision/image.py in __call__(self, x, *args, **kwargs)
495 def __call__(self, x:Image, *args, **kwargs)->Image:
496 "Randomly execute our tfm on `x`."
--> 497 return self.tfm(x, *args, **{**self.resolved, **kwargs}) if self.do_run else x
498
499 def _resolve_tfms(tfms:TfmList):
~/anaconda3/envs/pytorch_v1/lib/python3.6/site-packages/fastai/vision/image.py in __call__(self, p, is_random, *args, **kwargs)
442 def __call__(self, *args:Any, p:float=1., is_random:bool=True, **kwargs:Any)->Image:
443 "Calc now if `args` passed; else create a transform called prob `p` if `random`."
--> 444 if args: return self.calc(*args, **kwargs)
445 else: return RandTransform(self, kwargs=kwargs, is_random=is_random, p=p)
446
~/anaconda3/envs/pytorch_v1/lib/python3.6/site-packages/fastai/vision/image.py in calc(self, x, *args, **kwargs)
447 def calc(self, x:Image, *args:Any, **kwargs:Any)->Image:
448 "Apply to image `x`, wrapping it if necessary."
--> 449 if self._wrap: return getattr(x, self._wrap)(self.func, *args, **kwargs)
450 else: return self.func(x, *args, **kwargs)
451
AttributeError: 'list' object has no attribute 'pixel'