paddlepaddle吧 关注:215贴子:314
  • 2回复贴,共1

py-reader如何处理读取数据失败的情况

只看楼主收藏回复

在imagnet-classification的demo中,如遇到数据读取失败,该如何处理?
fluid中可能处理方法:
在reader_cv2.py中进行process_image操作时,使用try-except的方式,若读取数据失败,则使用全0填充image,使用-1填充label。 在设置cross-entropy 损失函数忽略标签为-1的数据。
缺陷:如果损失函数不支持忽略指定标签该如何处理呢?
在pytorch中可能的处理方式:
1)在model forward之前,可以对标签为-1的数据进行滤除,pytorch的model可以支持动态的batchsize
(a. 不知道paddle是否支持每个batchsize数据大小不一致的情况; b. paddle的py-reader是否有方式显示的滤除标签为-1的数据)
2)在model forward之后,loss计算之前,对标签为-1的数据进行滤除。
3)在dataloader中,设置读取失败的数据返回为空,然后自定义collect-function即可,此时每个batch的大小可能不同。


1楼2019-06-06 15:01回复
    1) paddle支持batchsize不一致的情况,pyreader没法显示滤除-1,但是你可以在reader yield数据的时候返回不同的batchsize
    2)常用的loss应该都支持滤除-1的操作,一般也都支持指定weight的操作,也可以通过简单的判断把-1的权重置为0


    2楼2019-06-06 15:03
    回复
      好的,我试试。
      针对但在reader yield数据的时候返回不同的batchsize, 希望能在imagenet-classification的demo中给出示例。 reader_cv2.py中提供的是yield image_path,没太理解为什么yield path不yield image


      3楼2019-06-06 15:04
      回复