nvidia.dali.fn.readers.file#

nvidia.dali.fn.readers.file(*, bytes_per_sample_hint=[0], case_sensitive_filter=False, dir_filters=None, dont_use_mmap=False, file_filters=['*.jpg', '*.jpeg', '*.png', '*.bmp', '*.tif', '*.tiff', '*.pnm', '*.ppm', '*.pgm', '*.pbm', '*.jp2', '*.webp', '*.flac', '*.ogg', '*.wav'], file_list=None, file_root=None, files=None, initial_fill=1024, labels=None, lazy_init=False, num_shards=1, pad_last_batch=False, prefetch_queue_depth=1, preserve=False, random_shuffle=False, read_ahead=False, seed=-1, shard_id=0, shuffle_after_epoch=False, skip_cached_images=False, stick_to_shard=False, tensor_init_bytes=1048576, device=None, name=None)#

读取文件内容并返回文件-标签对。

此操作符可以在以下模式中使用

  1. 列出目录中的文件,并根据子目录结构分配标签。

在这种模式下,`file_root` 参数指示的目录应包含一个或多个子目录。这些子目录中的文件将被列出,并根据子目录的字典顺序分配标签。如果您提供带有 glob 字符串列表的 `file_filters` 参数,则操作符将列出与至少一个模式匹配的文件。否则,将使用默认的过滤器集(有关详细信息,请参阅 `file_filters` 的默认值)。

例如,此目录结构

<file_root>/0/image0.jpg
<file_root>/0/world_map.jpg
<file_root>/0/antarctic.png
<file_root>/1/cat.jpeg
<file_root>/1/dog.tif
<file_root>/2/car.jpeg
<file_root>/2/truck.jp2

默认情况下将产生以下输出

<contents of 0/image0.jpg>        0
<contents of 0/world_map.jpg>     0
<contents of 0/antarctic.png>     0
<contents of 1/cat.jpeg>          1
<contents of 1/dog.tif>           1
<contents of 2/car.jpeg>          2
<contents of 2/truck.jp2>         2

使用 `file_filters = ["*.jpg", "*.jpeg"]` 将产生以下输出

<contents of 0/image0.jpg>        0
<contents of 0/world_map.jpg>     0
<contents of 1/cat.jpeg>          1
<contents of 2/car.jpeg>          2
  1. 使用存储在文本文件中的文件名和标签。

`file_list` 参数指向一个文件,该文件每行包含一个文件名和标签。示例

dog.jpg 0
cute kitten.jpg 1
doge.png 0

文件名中间可以包含空格,但不能包含尾随空格。

  1. 使用以字符串和整数列表形式提供的文件名和标签。

与其他读取器一样,此操作符返回的(文件,标签)对可以随机打乱,并且可以应用各种分片策略。有关详细信息,请参阅此操作符参数的文档。

支持的后端
  • ‘cpu’

关键字参数:
  • bytes_per_sample_hint (int 或 list of int, 可选,默认值 = [0]) –

    输出大小提示,以字节/样本为单位。

    如果指定,则将预先分配驻留在 GPU 或页锁定主机内存中的操作符输出,以容纳此大小的样本批次。

  • case_sensitive_filter (bool, 可选,默认值 = False) – 如果设置为 True,则过滤器将区分大小写匹配,否则不区分大小写。

  • dir_filters (strlist of str, 可选) –

    用于过滤 `file_root` 下子目录列表的 glob 字符串列表。

    当文件路径来自 `file_list` 或 `files` 时,将忽略此参数。

  • dont_use_mmap (bool, 可选,默认值 = False) –

    如果设置为 True,Loader 将使用普通文件 I/O,而不是尝试将文件映射到内存中。

    当访问本地文件系统时,映射提供了一点性能优势,但大多数网络文件系统不提供最佳性能。

  • file_filters (str 或 list of str, 可选,默认值 = [‘*.jpg’, ‘*.jpeg’, ‘*.png’, ‘*.bmp’, ‘*.tif’, ‘*.tiff’, ‘*.pnm’, ‘*.ppm’, ‘*.pgm’, ‘*.pbm’, ‘*.jp2’, ‘*.webp’, ‘*.flac’, ‘*.ogg’, ‘*.wav’]) –

    用于过滤 `file_root` 子目录中文件列表的 glob 字符串列表。

    当文件路径来自 `file_list` 或 `files` 时,将忽略此参数。

  • file_list (str, 可选) –

    文本文件的路径,该文件每行包含一个空格分隔的 `filename label` 对。文件名相对于该文件的位置或 `file_root`(如果指定)。

    此参数与 `files` 互斥。

  • file_root (str, 可选) –

    包含数据文件的目录的路径。

    如果不使用 `file_list` 或 `files`,则会遍历此目录以发现文件。在这种操作模式下,需要 `file_root`。

  • files (strlist of str, 可选) –

    要从中读取数据的文件的路径列表。

    如果提供了 `file_root`,则路径被视为相对于它。当使用 `files` 时,标签取自 `labels` 参数,或者,如果未提供,则包含给定文件在 `files` 列表中出现的索引。

    此参数与 `file_list` 互斥。

  • initial_fill (int, 可选,默认值 = 1024) –

    用于洗牌的缓冲区的大小。

    如果 `random_shuffle` 为 False,则忽略此参数。

  • labels (intlist of int, 可选) –

    伴随 `files` 参数中列出的文件内容的标签。

    如果未使用,则将顺序的从 0 开始的索引用作标签

  • lazy_init (bool, 可选,默认值 = False) – 仅在第一次运行时(而不是在构造函数中)解析和准备数据集元数据。

  • num_shards (int, 可选,默认值 = 1) –

    将数据划分为指定数量的部分(分片)。

    这通常用于多 GPU 或多节点训练。

  • pad_last_batch (bool, 可选,默认值 = False) –

    如果设置为 True,则通过重复最后一个样本来填充分片。

    注意

    如果跨分片的批次数量不同,则此选项可能会导致将整批重复样本添加到数据集中。

  • prefetch_queue_depth (int, 可选,默认值 = 1) –

    指定内部 Loader 要预取的批次数量。

    当 pipeline 受 CPU 阶段限制时,应增加此值,以内存消耗换取与 Loader 线程更好的交错。

  • preserve (bool, 可选,默认值 = False) – 即使操作符的输出未使用,也阻止将其从图中删除。

  • random_shuffle (bool, 可选,默认值 = False) –

    确定是否随机洗牌数据。

    大小等于 `initial_fill` 的预取缓冲区用于顺序读取数据,然后随机选择样本以形成批次。

  • read_ahead (bool, 可选,默认值 = False) –

    确定是否应预读访问的数据。

    对于 LMDB、RecordIO 或 TFRecord 等大型文件,此参数会减慢首次访问速度,但会缩短所有后续访问的时间。

  • seed (int, 可选,默认值 = -1) – 随机种子;如果未设置,将自动分配一个。

  • shard_id (int, 可选,默认值 = 0) – 要读取的分片的索引。

  • shuffle_after_epoch (bool, 可选,默认值 = False) –

    如果设置为 True,则读取器在每个 epoch 后洗牌整个数据集。

    当此参数设置为 True 时,不能使用 `stick_to_shard` 和 `random_shuffle`。

  • skip_cached_images (bool, 可选,默认值 = False) –

    如果设置为 True,则当样本在解码器缓存中时,将跳过加载数据。

    在这种情况下,加载器的输出将为空。

  • stick_to_shard (bool, 可选,默认值 = False) –

    确定读取器是否应坚持数据分片,而不是遍历整个数据集。

    如果使用解码器缓存,则可以显着减少要缓存的数据量,但可能会影响训练的准确性。

  • tensor_init_bytes (int, 可选,默认值 = 1048576) – 每个图像要分配多少内存的提示。