首页 > 解决方案 > tf.data.Dataset 与步进批次

问题描述

我有一个包含 8760 个样本的时间数据集。不知道有没有办法以step为1来批量,即:第一批包含No.1到4,第二批包含No.2到5,第三批包含No.3到6等

标签: pythontensorflowtensorflow-datasets

解决方案


由于您只有 8760 个样本,您可能可以负担(就 RAM 成本而言)最简单的解决方案 - 只需使用普通 Python 代码转换您的数据:

dataset = [sample1, sample2, ... sample8760]
transformed_dataset = []
for i in range(len(dataset) - 3):
    transformed_dataset.append(dataset[i:i + 4])

如果您无法将数据集存储在内存中,请尝试使用生成器函数(从 TF 2.1 开始,您可以将生成器直接传递给model.fit()

def dataset_generator():
     for i in range(len(dataset) - 3):
         yield dataset[i:i + 4]

推荐阅读