paddle框架(paddlepaddle版本时2.0.1
)下在自定义的dataset上使用dataloader的时候,__getitem__(self, index):
函数抛出异常会报错:
File "train.py", line 103, in train
for iterx,(inputx,labelx) in enumerate(train_loader()):
File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dataloader/dataloader_iter.py", line 351, in __next__
return self._reader.read_next_var_list()
SystemError: (Fatal) Blocking queue is killed because the data reader raises an exception.
[Hint: Expected killed_ != true, but received killed_:1 == true:1.] (at /paddle/paddle/fluid/operators/reader/blocking_queue.h:158)
下面链接中博主指出了一个类似的报错问题
使用paddle的dataloader不能返回tensor,需要返回np类型
但是在使用过程中,又发现了新问题,在使用GPU加载时,即使返回numpy.ndarray
类型,也会因为返回值使用过reshape
函数报同样的错
def __getitem__(self,index):
...
label_T = img_cat_T[:,:,3][np.newaxis,:,:]
# label_T = img_cat_T[:,:,3].reshape(1,-1,-1) #System Error
...
return label_T
如上,注释的代码与未注释的在numpy下执行同样的操作,但是reshape会报错,估计是个bug