nvidia.dali.fn.readers.numpy#

nvidia.dali.fn.readers.numpy(*, bytes_per_sample_hint=[0], cache_header_information=False, dont_use_mmap=False, file_filter='*.npy', file_list=None, file_root=None, files=None, fill_value=0.0, initial_fill=1024, lazy_init=False, num_shards=1, out_of_bounds_policy='error', pad_last_batch=False, prefetch_queue_depth=1, preserve=False, random_shuffle=False, read_ahead=False, register_buffers=True, rel_roi_end=None, rel_roi_shape=None, rel_roi_start=None, roi_axes=[], roi_end=None, roi_shape=None, roi_start=None, seed=-1, shard_id=0, shuffle_after_epoch=False, skip_cached_images=False, stick_to_shard=False, tensor_init_bytes=1048576, use_o_direct=False, device=None, name=None)#

从目录读取 Numpy 数组。

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

  1. 读取由 file_root 指示的目录中与给定 file_filter 匹配的所有文件。

  2. file_list 参数中指示的文本文件读取文件名。

  3. 读取 files 参数中列出的文件。

注意

gpu 后端需要 cuFile/GDS 支持 (418.x 驱动程序系列或更高版本)。它随 CUDA 工具包一起提供,从 CUDA 11.4 开始。请查看 GDS 文档以获取更多详细信息。

gpu 读取器以块读取文件。块的大小可以通过环境变量 DALI_GDS_CHUNK_SIZE 在进程范围内控制。有效值是 4096 到 16M 之间的 2 的幂,默认值为 2M。为了方便起见,该值可以使用 k 或 M 后缀指定,分别应用 1024 和 2^20 的乘数。

支持的后端
  • ‘cpu’

  • ‘gpu’

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

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

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

  • cache_header_information (bool, 可选, 默认 = False) – 如果设置为 True,则缓存每个文件的标头信息,从而提高访问速度。

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

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

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

  • file_filter (str, 可选, 默认 = ‘*.npy’) –

    如果指定了值,则该字符串被解释为 glob 字符串,以过滤 file_root 的子目录中的文件列表。

    当文件路径从 file_listfiles 获取时,将忽略此参数。

  • file_list (str, 可选) –

    文本文件的路径,其中包含文件名(每行一个),文件名相对于该文件的位置或 file_root(如果指定)的位置。

    此参数与 files 互斥。

  • file_root (str, 可选) –

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

    如果不使用 file_listfiles。将遍历此目录以发现文件。在这种操作模式下,file_root 是必需的。

  • files (strlist of str, 可选) –

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

    如果提供了 file_root,则路径被视为相对于它。

    此参数与 file_list 互斥。

  • fill_value (float, 可选, 默认 = 0.0) – 当 out_of_bounds_policy 设置为 “pad” 时,确定填充值。

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

    用于洗牌的缓冲区大小。

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

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

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

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

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

  • out_of_bounds_policy (str, 可选, 默认 = ‘error’) –

    确定在 numpy 数组边界之外读取时的策略。

    以下是支持值的列表

    • "error" (默认): 尝试在图像边界之外读取将产生错误。

    • "pad": 将根据需要使用零或使用 fill_value 参数指定的任何其他值填充数组。

    • "trim_to_shape": ROI 将被裁剪到数组的边界。

  • 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 等大型文件,此参数会减慢首次访问速度,但会减少所有后续访问的时间。

  • register_buffers (bool, 可选, 默认 = True) –

    适用于 gpu 后端类型。

    警告

    此参数暂时禁用,保留用于向后兼容。它将在未来的版本中重新启用。

    如果为 true,则设备 I/O 缓冲区将注册到 cuFile。如果样本大小差异很大,则不建议这样做。

  • rel_roi_end (floatlist of floatTensorList of float, 可选) –

    感兴趣区域的末尾,以相对坐标(范围 [0.0 - 1.0])表示。

    此参数与 “roi_end”、“roi_shape” 和 “rel_roi_shape” 不兼容。

  • rel_roi_shape (floatlist of floatTensorList of float, 可选) –

    感兴趣区域的形状,以相对坐标(范围 [0.0 - 1.0])表示。

    此参数与 “roi_shape”、“roi_end” 和 “rel_roi_end” 不兼容。

  • rel_roi_start (floatlist of floatTensorList of float, 可选) –

    感兴趣区域的开始,以相对坐标(范围 [0.0 - 1.0])表示。

    此参数与 “roi_start” 不兼容。

  • roi_axes (int 或 list of int, 可选, 默认 = []) –

    用于 ROI 锚点和形状参数的维度顺序,作为维度索引。

    如果未提供,则应在 ROI 参数中指定所有维度。

  • roi_end (intlist of intTensorList of int, 可选) –

    感兴趣区域的末尾,以绝对坐标表示。

    此参数与 “rel_roi_end”、“roi_shape” 和 “rel_roi_shape” 不兼容。

  • roi_shape (intlist of intTensorList of int, 可选) –

    感兴趣区域的形状,以绝对坐标表示。

    此参数与 “rel_roi_shape”、“roi_end” 和 “rel_roi_end” 不兼容。

  • roi_start (intlist of intTensorList of int, 可选) –

    感兴趣区域的开始,以绝对坐标表示。

    此参数与 “rel_roi_start” 不兼容。

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

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

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

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

    当此参数设置为 True 时,不能使用 stick_to_shardrandom_shuffle

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

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

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

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

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

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

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

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

    如果设置为 True,数据将直接从存储读取,绕过系统缓存。

    dont_use_mmap=False 互斥。