rrjia opened a new issue #18262:
URL: https://github.com/apache/incubator-mxnet/issues/18262
## Description
mxnet dataLoader error
I defined myself dataset, it work fine , but combine with
gluon.data.dataLoader it can not work.
class MarketDataset(dataset.Dataset):
def __init__(self, name, data_root_path, transform=None):
self.data_dir = data_root_path
self.name = name
self.imgs = []
self._transform = transform
if self.name == "train":
sub_dir = os.path.join(self.data_dir, "bounding_box_train")
elif self.name == 'test':
sub_dir = os.path.join(self.data_dir, "bounding_box_test")
elif self.name == 'query':
sub_dir = os.path.join(self.data_dir, "query")
else:
print("name error !! ")
raise NotImplementedError('Dataset: {} not
exist.'.format(self.name))
file_names = os.listdir(sub_dir)
for file_name in file_names:
if ".jpg" in file_name and "-1" not in file_name:
file_path = os.path.join(sub_dir, file_name)
self.imgs.append(file_path)
self._id2label = {_id: index for index, _id in
enumerate(self.unique_ids)}
def __getitem__(self, idx):
path = self.imgs[idx]
target = self._id2label[self.id(path)]
img = image.imread(path)
if self.transform is not None:
img = self.transform(img)
return img, target
def __len__(self):
return len(self.imgs)
@staticmethod
def id(file_path):
"""
:param file_path: unix style file path
:return: person id
"""
return int(os.path.split(file_path)[-1].split("_")[0])
@staticmethod
def camera(file_path):
"""
:param file_path: unix style file path
:return: camera id
"""
return int(os.path.split(file_path)[-1].split("_")[1][1])
@property
def ids(self):
"""
:return: person id list corresponding to dataset image paths
"""
return [self.id(path) for path in self.imgs]
@property
def unique_ids(self):
"""
:return: unique person ids in ascending order
"""
return sorted(set(self.ids))
@property
def cameras(self):
"""
:return: camera id list corresponding to dataset image paths
"""
return [self.camera(path) for path in self.imgs]
### Error Message
File
"D:\programFiles\Anaconda3\lib\site-packages\mxnet\gluon\data\dataloader.py",
line 451, in __next__
batch = pickle.loads(ret.get()) if self._dataset is None else ret.get()
File "D:\programFiles\Anaconda3\lib\multiprocessing\pool.py", line 670, in
get
raise self._value
File "D:\programFiles\Anaconda3\lib\multiprocessing\pool.py", line 119, in
worker
result = (True, func(*args, **kwds))
File
"D:\programFiles\Anaconda3\lib\site-packages\mxnet\gluon\data\dataloader.py",
line 407, in _thread_worker_fn
return batchify_fn([dataset[i] for i in samples])
File
"D:\programFiles\Anaconda3\lib\site-packages\mxnet\gluon\data\dataloader.py",
line 147, in default_mp_batchify_fn
return [default_mp_batchify_fn(i) for i in data]
File
"D:\programFiles\Anaconda3\lib\site-packages\mxnet\gluon\data\dataloader.py",
line 147, in <listcomp>
return [default_mp_batchify_fn(i) for i in data]
File
"D:\programFiles\Anaconda3\lib\site-packages\mxnet\gluon\data\dataloader.py",
line 149, in default_mp_batchify_fn
data = np.asarray(data)
File "D:\programFiles\Anaconda3\lib\site-packages\numpy\core\_asarray.py",
line 85, in asarray
return array(a, dtype, copy=False, order=order)
File
"D:\programFiles\Anaconda3\lib\site-packages\mxnet\gluon\data\dataset.py", line
124, in __getitem__
return self._fn(*item)
TypeError: 'NDArray' object is not callable
## To Reproduce
(If you developed your own code, please provide a short script that
reproduces the error. For existing examples, please provide link.)
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]