mindflow.data.MindDataset

class mindflow.data.MindDataset(dataset_files, dataset_name='dataset', constraint_type='Label', shuffle=True, num_shards=None, shard_id=None, sampler=None, num_samples=None, num_parallel_workers=None)[源代码]

从MindRecord类型的数据创建数据集。

参数:
  • dataset_files (Union[str, list[str]]) - 如果数据集文件是str,则它代表MindRecord的一个子文件名。同一路径下来自同一个数据源的子文件会被自动加载。如果 dataset_file 是list,它表示要读取的数据集文件列表。

  • dataset_name (str, 可选) - 数据集名称,默认值: "dataset_name"

  • constraint_type (str, 可选) - 指定数据集的约束类型,以获取其相应的损失函数。默认值: "Label"。其他支持的类型可详见 mindflow.data.Dataset

  • shuffle (Union[bool, Shuffle level], 可选) - 每个epoch对数据执行shuffle。如果shuffle为 False,则不执行shuffle。如果shuffle为 True,则执行全局shuffle。默认值: True。 而且,有两种shuffle level:

    • Shuffle.GLOBAL:对文件和样例进行shuffle。

    • Shuffle.FILES:仅对文件shuffle。

  • num_shards (int, 可选) - 数据集将划分为的分片数指定此参数时, num_samples 反映每个分片的最大样本数。默认值: None

  • shard_id (int, 可选) - num_shards 中的分片ID。只有当同时指定 num_shards 时,才能指定该参数。默认值: None

  • sampler (Sampler, 可选) - 用于从数据集。支持列表:SubsetRandomSampler、PkSampler、RandomSampler、SequentialSampler、DistributedSampler。默认值: None,采样器是独占的使用shuffle和block_reader。

  • num_samples (int, 可选) - 要包括在数据集中的样本数。默认值: None,所有样本。

  • num_parallel_workers (int, 可选) - 读取器的数。默认值: None

异常:
  • ValueError - 如果 dataset_files 无效或不存在。

  • TypeError - 如果数据集名称不是string。

  • ValueError - 如果constraint_type.lower()不在[“equation”, “bc”, “ic”, “label”, “function”, “custom”]中。

  • RuntimeError - 如果指定了 num_shards ,但 shard_idNone

  • RuntimeError - 如果指定了 shard_id ,但 num_shardsNone

  • ValueError - 如果 shard_id 无效(<0或>= num_shards)。

支持平台:

Ascend GPU

样例:

>>> from mindflow.data import MindDataset
>>> dataset_files = ["./data_dir"] # contains 1 or multiple MindRecord files
>>> dataset = MindDataset(dataset_files=dataset_files)
create_dataset(batch_size=1, preprocess_fn=None, updated_columns_list=None, drop_remainder=True, prebatched_data=False, num_parallel_workers=1, python_multiprocessing=False)[源代码]

创建最终的MindSpore类型数据集。

参数:
  • batch_size (int, 可选) - 每个批处理创建的行数为int。默认值: 1

  • preprocess_fn (Union[list[TensorOp], list[functions]], 可选) - 要进行的操作列表应用于数据集。操作按它们在此列表中的显示顺序应用。默认值: None

  • updated_columns_list (list, 可选) - 对数据集的列进行的操作。默认值: None

  • drop_remainder (bool, 可选) - 确定是否删除最后一个块,其数据行号小于批处理大小。如果为 True,如果有更少的比批处理大小行可用于创建最后一个批处理,那么这些行将被丢弃,而不传播到子节点。默认值: True

  • prebatched_data (bool, 可选) - 在数据预处理前生成预批处理数据。默认值: False

  • num_parallel_workers (int, 可选) - 并行处理数据集的工作线程(线程)数量。默认值: 1

  • python_multiprocessing (bool, 可选) - 使用多处理并行Python函数per_batch_map。如果函数计算量很大,此选项可能会很有用。默认值: False

返回:

BatchDataset,批处理的数据集。

样例:

>>> data = dataset.create_dataset()
get_columns_list()[源代码]

获取数据集中的列。

返回:

list[str]。最终统一数据集的列名列表。

样例:

>>> columns_list = dataset.get_columns_list()
set_constraint_type(constraint_type='Equation')[源代码]

设置数据集的约束类型。

参数:
  • constraint_type (Union[str, dict]) - 指定数据集的约束类型。如果是字符串,则约束所有子数据集的类型将设置为相同的类型。如果是dict,则子数据集及其约束类型由对(key, value)指定。默认值: “Equation”

样例:

>>> dataset.set_constraint_type("Equation")
split_dataset(dataset_dict, constraint_dict=None)[源代码]

拆分原始数据集以设置差异损失函数。

参数:
  • dataset_dict (dict) - 每个子数据集的字典,key是标记的名称,而value 指子数据集中包含的指定列。

  • constraint_dict (Union[None, str, dict]) - 指定数据集的约束类型。如果是 None,则 “Label” 将为所有人设置。如果是字符串,则所有将设置为相同的字符串。如果是dict,子数据集及其约束类型由对(key, value)指定。默认值: None

样例:

>>> dataset.split_dataset({"Equation" : "inner_points", "BC" : "bc_points"})