Hello,
I have data with this structure:
./MyFolder/TrainingSet
./MyFolder/ValidationSet
In order to read both training and validation directories I tried:
fnames = get_image_files('./MyFolder', folders=['TrainingSet', 'ValidationSet'])
dblk = DataBlock(blocks=(ImageBlock, MaskBlock(codes)),
get_items=fnames,
splitter=GrandparentSplitter('TrainingSet', 'ValidationSet'),
get_y=get_msk,
batch_tfms=[Normalize.from_stats(*imagenet_stats)]
But when I run:
dls = dblk.dataloaders('./MyFolder', bs=256)
I get this error:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/tmp/ipykernel_35/2775810610.py in <module>
----> 1 dls = dblk.dataloaders('./GlomerTopi', bs=256)
/opt/conda/lib/python3.7/site-packages/fastai/data/block.py in dataloaders(self, source, path, verbose, **kwargs)
111
112 def dataloaders(self, source, path='.', verbose=False, **kwargs):
--> 113 dsets = self.datasets(source, verbose=verbose)
114 kwargs = {**self.dls_kwargs, **kwargs, 'verbose': verbose}
115 return dsets.dataloaders(path=path, after_item=self.item_tfms, after_batch=self.batch_tfms, **kwargs)
/opt/conda/lib/python3.7/site-packages/fastai/data/block.py in datasets(self, source, verbose)
105 def datasets(self, source, verbose=False):
106 self.source = source ; pv(f"Collecting items from {source}", verbose)
--> 107 items = (self.get_items or noop)(source) ; pv(f"Found {len(items)} items", verbose)
108 splits = (self.splitter or RandomSplitter())(items)
109 pv(f"{len(splits)} datasets of sizes {','.join([str(len(s)) for s in splits])}", verbose)
TypeError: 'L' object is not callable
Has `fastai` a specific function to handle such structured data?