当目录不为空时,fastai 抛出 "training set empty" 错误
fastai throwing a "training set empty" error when the directories are not empty
我正在尝试构建一个包含训练集和测试集的分类器。然而,尽管训练集和测试集都不为空,FastAI 还是抛出 UserWarning: Your training set is empty
错误。这是我的终端命令的输出,用于查看每个文件夹有多少项目:
%cd Food-101/images/train/
!ls -1 | wc -l
%cd ../test
!ls -1 | wc -l
%cd ../../
/content/Food-101/images/train
75750
/content/Food-101/images/test
25250
/content/Food-101
这是我的代码:
import pandas as pd
from fastai import *
from fastai.vision import *
from fastai.callbacks.hooks import *
from pathlib import Path
from numba import vectorize
from subprocess import call, run
import os, git, glob, shutil
file_parse = r'/([^/]+)_\d+\.(png|jpg|jpeg)$'
np.random.seed(42)
data = ImageDataBunch.from_folder(path, train= path + '/images/train', test=path + '/images/test', valid_pct=0.2, ds_tfms=get_transforms(), size=224)
data.normalize(imagenet_stats)
这是错误:
/usr/local/lib/python3.6/dist-packages/fastai/data_block.py:458: UserWarning: Your training set is empty. If this is by design, pass `ignore_empty=True` to remove this warning.
warn("Your training set is empty. If this is by design, pass `ignore_empty=True` to remove this warning.")
/usr/local/lib/python3.6/dist-packages/fastai/data_block.py:461: UserWarning: Your validation set is empty. If this is by design, use `split_none()`
or pass `ignore_empty=True` when labelling to remove this warning.
or pass `ignore_empty=True` when labelling to remove this warning.""")
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/fastai/data_block.py in get_label_cls(self, labels, label_cls, label_delim, **kwargs)
264 if label_delim is not None: return MultiCategoryList
--> 265 try: it = index_row(labels,0)
266 except: raise Exception("""Can't infer the type of your targets.
7 frames
IndexError: index 0 is out of bounds for axis 0 with size 0
During handling of the above exception, another exception occurred:
Exception Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/fastai/data_block.py in get_label_cls(self, labels, label_cls, label_delim, **kwargs)
265 try: it = index_row(labels,0)
266 except: raise Exception("""Can't infer the type of your targets.
--> 267 It's either because your data source is empty or because your labelling function raised an error.""")
268 if isinstance(it, (float, np.float32)): return FloatList
269 if isinstance(try_int(it), (str, Integral)): return CategoryList
Exception: Can't infer the type of your targets.
It's either because your data source is empty or because your labelling function raised an error.
我不明白为什么当两个目录都清楚地填充了图像时它会抛出这个错误。
你能确保你的 path
变量设置为 /content/Food-101/ 吗?
我解决了问题:
data = ImageDataBunch.from_folder('/content/Food-101/images', train='/content/Food-101/images/train', test='/content/Food-101/images/test', valid_pct=0.2, ds_tfms=get_transforms(), size=224)
我正在尝试构建一个包含训练集和测试集的分类器。然而,尽管训练集和测试集都不为空,FastAI 还是抛出 UserWarning: Your training set is empty
错误。这是我的终端命令的输出,用于查看每个文件夹有多少项目:
%cd Food-101/images/train/
!ls -1 | wc -l
%cd ../test
!ls -1 | wc -l
%cd ../../
/content/Food-101/images/train
75750
/content/Food-101/images/test
25250
/content/Food-101
这是我的代码:
import pandas as pd
from fastai import *
from fastai.vision import *
from fastai.callbacks.hooks import *
from pathlib import Path
from numba import vectorize
from subprocess import call, run
import os, git, glob, shutil
file_parse = r'/([^/]+)_\d+\.(png|jpg|jpeg)$'
np.random.seed(42)
data = ImageDataBunch.from_folder(path, train= path + '/images/train', test=path + '/images/test', valid_pct=0.2, ds_tfms=get_transforms(), size=224)
data.normalize(imagenet_stats)
这是错误:
/usr/local/lib/python3.6/dist-packages/fastai/data_block.py:458: UserWarning: Your training set is empty. If this is by design, pass `ignore_empty=True` to remove this warning.
warn("Your training set is empty. If this is by design, pass `ignore_empty=True` to remove this warning.")
/usr/local/lib/python3.6/dist-packages/fastai/data_block.py:461: UserWarning: Your validation set is empty. If this is by design, use `split_none()`
or pass `ignore_empty=True` when labelling to remove this warning.
or pass `ignore_empty=True` when labelling to remove this warning.""")
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/fastai/data_block.py in get_label_cls(self, labels, label_cls, label_delim, **kwargs)
264 if label_delim is not None: return MultiCategoryList
--> 265 try: it = index_row(labels,0)
266 except: raise Exception("""Can't infer the type of your targets.
7 frames
IndexError: index 0 is out of bounds for axis 0 with size 0
During handling of the above exception, another exception occurred:
Exception Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/fastai/data_block.py in get_label_cls(self, labels, label_cls, label_delim, **kwargs)
265 try: it = index_row(labels,0)
266 except: raise Exception("""Can't infer the type of your targets.
--> 267 It's either because your data source is empty or because your labelling function raised an error.""")
268 if isinstance(it, (float, np.float32)): return FloatList
269 if isinstance(try_int(it), (str, Integral)): return CategoryList
Exception: Can't infer the type of your targets.
It's either because your data source is empty or because your labelling function raised an error.
我不明白为什么当两个目录都清楚地填充了图像时它会抛出这个错误。
你能确保你的 path
变量设置为 /content/Food-101/ 吗?
我解决了问题:
data = ImageDataBunch.from_folder('/content/Food-101/images', train='/content/Food-101/images/train', test='/content/Food-101/images/test', valid_pct=0.2, ds_tfms=get_transforms(), size=224)