DatasetFolder¶
- class torchvision.datasets.DatasetFolder(root: Union[str, Path], loader: Callable[[str], Any], extensions: Optional[tuple[str, ...]] = None, transform: Optional[Callable] = None, target_transform: Optional[Callable] = None, is_valid_file: Optional[Callable[[str], bool]] = None, allow_empty: bool = False)[源码]¶
一个通用的数据加载器。
可以通过重写
find_classes()
方法来自定义此默认目录结构。- 参数:
root (str 或
pathlib.Path
) – 根目录路径。loader (callable) – 一个加载样本(给定其路径)的函数。
extensions (tuple[string]) – 允许的扩展名列表。不应同时传递 extensions 和 is_valid_file。
transform (callable, optional) – 一个函数/转换,接收样本并返回转换后的版本。例如,图像的
transforms.RandomCrop
。target_transform (可调用对象, 可选) – 一个函数/变换,接受目标并对其进行变换。
is_valid_file (callable, optional) – 一个函数,接收文件的路径并检查文件是否为有效文件(用于检查损坏的文件)。不应同时传递 extensions 和 is_valid_file。
allow_empty – 如果为 True,则空文件夹被视为有效类别。如果为 False(默认值),则对空文件夹引发错误。
- find_classes(directory: Union[str, Path]) tuple[list[str], dict[str, int]] [源码]¶
查找以下结构的数据集中的类别文件夹
directory/ ├── class_x │ ├── xxx.ext │ ├── xxy.ext │ └── ... │ └── xxz.ext └── class_y ├── 123.ext ├── nsdf3.ext └── ... └── asd932_.ext
可以通过重写此方法来仅考虑类别的子集,或适应不同的数据集目录结构。
- 参数:
directory (str) – 根数据集路径,对应于
self.root
- 抛出:
FileNotFoundError – 如果
dir
没有类别文件夹。- 返回:
所有类别列表和将每个类别映射到索引的字典。
- 返回类型:
- static make_dataset(directory: Union[str, Path], class_to_idx: dict[str, int], extensions: Optional[tuple[str, ...]] = None, is_valid_file: Optional[Callable[[str], bool]] = None, allow_empty: bool = False) list[tuple[str, int]] [源码]¶
生成样本列表,形式为 (样本路径, 类别)。
可以重写此方法,例如从压缩的 zip 文件而不是磁盘读取文件。
- 参数:
directory (str) – 根数据集目录,对应于
self.root
。extensions (optional) – 允许的扩展名列表。应传递 extensions 或 is_valid_file 中的一个。默认为 None。
is_valid_file (optional) – 一个函数,接收文件的路径并检查文件是否为有效文件(用于检查损坏的文件)。不应同时传递 extensions 和 is_valid_file。默认为 None。
allow_empty (bool, optional) – 如果为 True,则空文件夹被视为有效类别。如果为 False(默认值),则对空文件夹引发错误。
- 抛出:
ValueError – 如果
class_to_idx
为空。ValueError – 如果
extensions
和is_valid_file
都为 None 或都非 None。FileNotFoundError – 如果未为任何类别找到有效文件。
- 返回:
样本,形式为 (样本路径, 类别)
- 返回类型: