paddle报错SystemError: (Fatal) Blocking queue is killed because the data reader raises an exception.

在使用paddle的dataloader的时候,如果def getitem(self, index):函数发生异常会报错:

ERROR:root:DataLoader reader thread raised an exception!
Traceback (most recent call last):
  File "train.py", line 28, in 
    for i, (image1, image2, label) in enumerate(loader()):
  File "/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/paddle/fluid/dataloader/dataloader_iter.py", line 788, in __next__
    data = 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类型,实在无语啊

如图,圈起来的那句话在使用cpu的时候是可以正常加载数据的,但是!!!!如果使用gpu就会报上面的错误,修改成注释的那句返回在cpu和gpu的情况下就不会报错了,注释的返回就是返回了np类型。
估计是个bug…用的是paddlepaddle2.0.0不知道会不会修复。

Tips:
如果实在找不到这个异常的原因可以写一段代码测试,直接遍历要传入dataloader的dataset,这个dataset是列表的类型,如果有异常就会报错python的错误可以来debug。

你可能感兴趣的:(#,其他学习记录,paddlepaddle)