paddlets.models.dl.paddlepaddle.adapter.data_adapter

class DataAdapter[源代码]

基类:object

数据转换类,用于将 paddlets.TSDataset 数据集转换为 paddle.io.Dataset 样本数据集和 paddle.io.DataLoader 样本数据批量加载器。

to_paddle_dataset(rawdataset: TSDataset, in_chunk_len: int = 1, out_chunk_len: int = 1, skip_chunk_len: int = 0, sampling_stride: int = 1, time_window: Optional[Tuple] = None) PaddleDatasetImpl[源代码]

paddlets.TSDataset 数据集转换为 paddle.io.Dataset 样本数据集。

参数
  • rawdataset (TSDataset) – 原始的 paddle.TSDataset 数据集,用于构建 paddle.io.Dataset 样本数据集。

  • in_chunk_len (int) – 模型输入的时间序列长度。

  • out_chunk_len (int) – 模型输出的序列长度。

  • skip_chunk_len (int) – 可选变量, 输入序列与输出序列之间跳过的序列长度,既不作为特征也不作为预测目标使用,默认值为0。

  • sampling_stride (int, optional) – 在第i条样本和第i+1条样本之间跨越的时间步数。 具体来说,令 t 为target时序数据的时间索引,t[i] 为第i条样本的起始时间,t[i+1]`为第i+1条样本的起始时间, 则`sampling_stride`代表 `t[i+1] - t[i] 的计算结果,即2条相邻的样本之间相差的时间点的数量。

  • time_window (Tuple, optional) – 一个包含2个元素的元组类型的时间窗口,允许adapter模块在其范围内构建样本。 time_window[0] 值代表窗口范围的下界,time_window[1] 值代表窗口范围的上界。 对于每一个包含在该左闭右闭范围内的元素,都代表一条样本的尾部索引。

返回

构建完成的 PaddleDatasetImpl 实例。

返回类型

PaddleDatasetImpl

to_paddle_dataloader(paddle_dataset: PaddleDatasetImpl, batch_size: int, collate_fn: Optional[Callable] = None, shuffle: bool = True) DataLoader[源代码]

paddle.io.Dataset 样本数据集转换为 paddle.io.DataLoader 样本批量加载器。

参数
  • paddle_dataset (PaddleDatasetImpl) – 原始的 TSDataset 数据集,用于构建 paddle.io.DataLoader 样本批量构建器。

  • batch_size (int) – 单个数据批量中包含的样本条数。

  • collate_fn (Callable, optional) – 用户自定义的单批量样本整合函数,可选参数。

  • shuffle (bool, optional) – 是否在生成批量样本之前对数据进行洗牌。默认为True。

返回

一个构建完成的paddle样本批量数据加载器。

返回类型

PaddleDataLoader

实际案例

# Given:
batch_size = 4
in_chunk_len = 3
out_chunk_len = 2
known_cov_chunk_len = in_chunk_len + out_chunk_len = 3 + 2 = 5
observed_cov_chunk_len = in_chunk_len = 3
target_col_num = 2 (target column number, e.g. ["t0", "t1"])
known_cov_col_num = 3 (known covariates column number, e.g. ["k0", "k1", "k2"])
observed_cov_col_num = 1 (observed covariates column number, e.g. ["obs0"])

# Built DataLoader instance:
dataloader = [
    # 1st batch
    {
        "past_target": paddle.Tensor(shape=(batch_size, in_chunk_len, target_col_num)),
        "future_target": paddle.Tensor(shape=(batch_size, out_chunk_len, target_col_num)),
        "known_cov": paddle.Tensor(shape=(batch_size, known_cov_chunk_len, known_cov_col_num)),
        "observed_cov": paddle.Tensor(shape=(batch_size, observed_cov_chunk_len, observed_cov_col_num))
    },

    # ...

    # N-th batch
    {
        "past_target": paddle.Tensor(shape=(batch_size, in_chunk_len, target_col_num)),
        "future_target": paddle.Tensor(shape=(batch_size, out_chunk_len, target_col_num)),
        "known_cov": paddle.Tensor(shape=(batch_size, known_cov_chunk_len, known_cov_col_num)),
        "observed_cov": paddle.Tensor(shape=(batch_size, observed_cov_chunk_len, observed_cov_col_num))
    }
]