最近在训练网络的时候,报错ValueError: num_samples should be a positive integer value, but got num_samples=0。
经过调试发现,这是在dataloader环节出现了问题。在数据读取时一个判断写的越界了,如下所示
def make_dataset(dir, opt):
images = []
assert os.path.isdir(dir), '%s is not a valid directory' % dir
fileList = sorted(os.walk(dir))
for root, _, fnames in fileList:
for fname in fnames:
if is_image_file(fname):
path = os.path.join(root, fname)
if ((opt.phase=='test') or (opt.phase=='train') and min(Image.open(path).size) >= 512):
images.append(path)
return images
当加载的图片小于512就会报错,把判断改小就解决了bug。
所以出现这个报错,就说明是训练数据没有加载成功,检查数据加载的相关程序。