数据加载器

本节介绍Fortuna的数据加载器功能。DataLoader对象是一个由数组的二维元组(可以是NumPy数组或JAX-NumPy数组)组成的可迭代对象,其中第一个组件是输入变量,第二个组件是目标变量。如果您有TensorFlowPyTorch张量或其他类型的数据加载器,您可以使用适当的DataLoader功能将它们转换为Fortuna可消化的格式(请参阅from_tensorflow_data_loader()from_torch_data_loader())。

数据DataLoader还允许您生成InputsLoaderTargetsLoader,即分别仅包含输入和仅包含目标变量的数据加载器(请查看to_inputs_loader()to_targets_loader())。此外,您可以将数据加载器转换为输入数组、目标数组或输入和目标数组的元组(请查看to_array_inputs()to_array_targets()to_array_data())。

class fortuna.data.loader.DataLoader(iterable, num_unique_labels=None)[来源]
chop(divisor)[来源]

截取数据加载器每批数据的最后一部分,以确保每批数据点的数量能被divisor整除。

Parameters:

divisor (int) – 每个批次必须划分的数据点数量。

Returns:

一个带有分批处理的数据加载器。

Return type:

DataLoader

classmethod from_array_data(data, batch_size=None, shuffle=False, prefetch=False)[来源]

从输入和目标变量的数组元组中构建一个DataLoader对象。

Parameters:
  • data (Batch) – 输入和目标数据数组。

  • batch_size (可选[int]) – 批量大小。如果未提供,数据将不会被分批处理。

  • shuffle (bool) – 数据加载器是否应在每次调用时进行洗牌。

  • prefetch (bool) – 是否预取下一批次。

Returns:

一个由数组元组构建的数据加载器。

Return type:

DataLoader

classmethod from_callable_iterable(fun)

将一个可调用的可迭代对象转换为BaseDataLoader子类的具体实例。

Parameters:

fun (Callable[[], Iterable[Batch]]) – 一个可调用的输入和目标数组元组的可迭代对象。

Returns:

BaseDataLoader子类的具体实例。

Return type:

T

classmethod from_inputs_loaders(inputs_loaders, targets, how='interpose')

将输入加载器列表转换为BaseDataLoader子类的具体实例。新创建的数据加载器由输入和相应分配的目标变量的连接批次组成。

Parameters:
  • inputs_loaders (List[BaseInputsLoader]) – 输入加载器的列表。

  • targets (List[int]) – 每个输入加载器的目标变量。

  • how (str) – 输入加载器将如何组合:'interpose' 将根据它们的批量大小交错输入加载器;'concatenate' 将忽略批量大小并将它们连接起来。

Returns:

BaseDataLoader 子类的具体实例。 数据加载器对象由输入的连接批次和分配的目标组成。

Return type:

T

classmethod from_iterable(iterable)

将一个可迭代对象转换为BaseDataLoader子类的具体实例。

Parameters:

iterable (Iterable[Batch]) – 一个包含输入和目标数组元组的可迭代对象。

Returns:

BaseDataLoader子类的具体实例。

Return type:

T

classmethod from_tensorflow_data_loader(tf_data_loader)

将TensorFlow数据加载器转换为BaseDataLoader子类的具体实例。

Parameters:

tf_data_loader – 一个TensorFlow数据加载器,其中每个批次是输入和目标张量的元组。

Returns:

BaseDataLoader子类的具体实例。

Return type:

T

classmethod from_torch_data_loader(torch_data_loader)

将PyTorch数据加载器转换为BaseDataLoader子类的具体实例。

Parameters:

torch_data_loader – 一个PyTorch数据加载器,其中每个批次是输入和目标张量的元组。

Returns:

BaseDataLoader子类的具体实例。

Return type:

T

property input_shape: Iterable[int] | Dict[str, Iterable[int]]

获取数据加载器中输入的形状。

property num_unique_labels: int | None

任务中唯一目标标签的数量(仅限分类)

Returns:

如果任务是分类任务,则返回任务中唯一目标标签的数量。否则返回None。

Return type:

整数

sample(seed, n_samples)[来源]

从数据加载器中抽样,带替换。

Parameters:
  • seed (int) – 随机种子。

  • n_samples (int) – 样本数量。

Returns:

由采样数据点组成的数据加载器。

Return type:

DataLoader

property size: int

数据加载器中的数据点数量。

Returns:

数据点的数量。

Return type:

整数

split(n_data)[来源]

将一个数据加载器拆分为两个数据加载器。

Parameters:

n_data (int) – 数据加载器应在多少个数据点之后进行拆分。第一个返回的数据加载器将包含恰好 n_data 个数据点。第二个将包含剩余的数据点。

Returns:

由原始数据加载器生成的两个数据加载器。

Return type:

元组[DataLoader, DataLoader]

to_array_data()[来源]

将数据加载器简化为输入和目标数组的元组。

Returns:

输入和目标数组的元组。

Return type:

批次

to_array_inputs()[来源]

将数据加载器简化为目标数据数组。

Returns:

输入数据的数组。

Return type:

数组

to_array_targets()[来源]

将数据加载器简化为目标数据数组。

Returns:

输入数据的数组。

Return type:

数组

to_inputs_loader()[来源]

将数据加载器简化为输入加载器。

Returns:

输入加载器源自数据加载器。

Return type:

InputsLoader

to_targets_loader()[来源]

将数据加载器简化为目标加载器。

Returns:

目标加载器源自数据加载器。

Return type:

TargetsLoader

to_transformed_data_loader(transform, status=None)

转换现有数据加载器的批次。

Parameters:
  • transform (Callable[[InputData, Array, Status], Tuple[InputData, Array, Status]]) – 一个转换函数。它接收一个批次并返回其转换结果。在此过程中,状态可能会被更新。

  • status (可选[Status]) – 初始状态。这可能包括转换使用的预计算对象。

Returns:

BaseDataLoader子类的具体实例。

Return type:

T

class fortuna.data.loader.InputsLoader(iterable)[来源]
chop(divisor)[来源]

截取输入加载器每批次的最后一部分,以确保每批次的数据点数能被divisor整除。

Parameters:

divisor (int) – 每个批次必须划分的数据点数量。

Returns:

一个带有分批处理的输入加载器。

Return type:

InputsLoader

classmethod from_array_inputs(inputs, batch_size=None, shuffle=False, prefetch=False)[来源]

从输入数据数组构建一个InputsLoader对象。

Parameters:
  • inputs (Array) – 输入数据数组。

  • batch_size (可选[int]) – 批量大小。如果未提供,则输入将不会被分批处理。

  • shuffle (bool) – 输入加载器是否应在每次调用时进行洗牌。

  • prefetch (bool) – 是否预取下一批次。

Returns:

一个由输入数组构建的输入加载器。

Return type:

InputsLoader

classmethod from_callable_iterable(fun)

将一个可调用的可迭代对象转换为BaseInputsLoader子类的具体实例

Parameters:

fun (Callable[[], Iterable[InputData]]) – 一个可调用的输入数据迭代器。

Returns:

BaseInputsLoader 子类的具体实例。

Return type:

T

classmethod from_data_loader(data_loader)

将数据加载器简化为输入加载器。

Parameters:

data_loader (DataLoader) – 一个数据加载器。

Returns:

BaseInputsLoader 子类的具体实例。

Return type:

T

classmethod from_iterable(iterable)

将一个可迭代对象转换为BaseInputsLoader子类的具体实例

Parameters:

iterable (Iterable[InputData]) – 输入数据的可迭代对象。

Returns:

BaseInputsLoader 子类的具体实例。

Return type:

T

property input_shape: Iterable[int] | Dict[str, Iterable[int]]

获取输入加载器中输入的形状。

sample(seed, n_samples)[来源]

从输入加载器中抽取样本,并进行替换。

Parameters:
  • seed (int) – 随机种子。

  • n_samples (int) – 样本数量。

Returns:

由采样输入组成的输入加载器。

Return type:

InputsLoader

property size: int

输入加载器中的数据点数量。

Returns:

数据点的数量。

Return type:

整数

split(n_data)[来源]

将一个输入加载器拆分为两个输入加载器。

Parameters:

n_data (int) – 数据点的数量,在此之后输入加载器应被分割。第一个返回的输入加载器将包含恰好 n_data 个输入。第二个将包含剩余的输入。

Returns:

两个输入加载器由原始加载器制成。

Return type:

元组[InputsLoader, InputsLoader]

to_array_inputs()[来源]

将输入加载器简化为输入数组。

Returns:

输入数据的数组。

Return type:

数组

to_transformed_inputs_loader(transform, status=None)

从现有的输入加载器创建一个具有转换输入的加载器。

Parameters:
  • transform (Callable[[Array, Status], Tuple[Array, Status]]) – 一个转换函数。它接收一批输入并返回它们的转换结果。

  • status (可选[Status]) – 初始状态。这可能包括转换使用的预计算对象。

Returns:

BaseInputsLoader 子类的具体实例。

Return type:

T

class fortuna.data.loader.TargetsLoader(iterable)[来源]
chop(divisor)[来源]

切掉目标加载器每批次的最后一部分,以确保每批次的数据点数能被divisor整除。

Parameters:

divisor (int) – 每个批次必须划分的数据点数量。

Returns:

一个带有切分批的目标加载器。

Return type:

TargetsLoader

classmethod from_array_targets(targets, batch_size=None, shuffle=False, prefetch=False)[来源]

从目标数据数组构建一个TargetsLoader对象。

Parameters:
  • targets (Array) – 目标数据数组。

  • batch_size (可选[int]) – 批量大小。如果未提供,目标将不会被分批处理。

  • shuffle (bool) – 目标加载器是否应在每次调用时进行洗牌。

  • prefetch (bool) – 是否预取下一批次。

Returns:

一个从目标数组构建的目标加载器。

Return type:

TargetsLoader

classmethod from_callable_iterable(fun)

将一个可调用的可迭代对象转换为BaseTargetsLoader子类的具体实例。

Parameters:

fun (Callable[[], Iterable[Union[Batch, InputData, Array]]],) – 一个可调用的目标数组迭代器。

Returns:

BaseTargetsLoader 子类的具体实例。

Return type:

T

classmethod from_data_loader(data_loader)

将数据加载器简化为目标加载器。

Parameters:

data_loader (DataLoader) – 一个数据加载器。

Returns:

BaseTargetsLoader子类的具体实例。

Return type:

T

classmethod from_iterable(iterable)

将一个可迭代对象转换为BaseTargetsLoader子类的具体实例。

Parameters:

iterable (Iterable[Array]) – 目标数组的可迭代对象。

Returns:

BaseTargetsLoader 子类的具体实例。

Return type:

T

sample(seed, n_samples)[来源]

从目标加载器中抽取样本,并进行替换。

Parameters:
  • seed (int) – 随机种子。

  • n_samples (int) – 样本数量。

Returns:

由采样目标组成的目标加载器。

Return type:

TargetsLoader

property size: int

目标加载器中的数据点数量。

Returns:

数据点的数量。

Return type:

整数

split(n_data)[来源]

将一个目标加载器拆分为两个目标加载器。

Parameters:

n_data (int) – 目标加载器应在多少个数据点之后进行拆分。第一个返回的目标加载器将包含恰好 n_data 个目标。第二个将包含剩余的目标。

Returns:

两个目标加载器由原始加载器制成。

Return type:

元组[TargetsLoader, TargetsLoader]

to_array_targets()[来源]

将目标的加载器减少为目标数组。

Returns:

目标数据的数组。

Return type:

数组

to_transformed_targets_loader(transform, status=None)

从现有的目标加载器中,创建一个具有转换目标的加载器。

Parameters:
  • transform (Callable[[Array, Status], Tuple[Array, Status]]) – 一个转换函数。它接收一批目标并返回它们的转换。在此过程中可能会更新状态。

  • status (可选[Status]) – 初始状态。这可能包括转换使用的预计算对象。

Returns:

BaseTargetsLoader 子类的具体实例。

Return type:

T