EOF Exception is not caught when using pyreader
Created by: mapingshuo
问题描述
我在使用Pyreader做Bert fine-tuning阶段的训练,训练中发现当模型训练到最后,会报如下错误:
PaddleCheckError: Expected ids_dims[ids_rank - 1] == 1, but received ids_dims[ids_rank - 1]:0 != 1:1.
ShapeError: The last dimensions of the 'Ids' tensor must be 1. But received Ids's last dimensions = 0, Ids's shape = [0]. at [/home/users/dongdaxiang/Paddle/paddle/fluid/operators/lookup_table_op.cc:51]
[operator < lookup_table > error]
报错内容显示exe.run传入了一个空Tensor, 即shape=[]。
可是PyReader遇到文件尾应该会raise EOFException后退出,不会给空数据去训练。
于是我打印了更多log,log显示程序已经抛出了EOFException,但是没有被catch,这个问题应该解决。log如下:
如何复现这个问题:
按照这个repo的readme即可复现。默认的数据需要训练2个小时才报错,建议取少量数据,这样可在几分钟内复现错误。