将数据集划分为小批次

PythonBeginner
立即练习

介绍

在这个项目中,你将学习如何实现一个将数据集划分为小批次的函数,这是深度学习训练中常用的一种技术。

🎯 任务

在这个项目中,你将学习:

  • 如何实现 data_pipeline 函数,将数据集划分为小批次
  • 如何测试 data_pipeline 函数,以确保它按预期工作

🏆 成果

完成这个项目后,你将能够:

  • 使用 data_pipeline 函数将数据集划分为小批次
  • 通过测试验证 data_pipeline 函数的功能

实现小批次

在这一步中,你将学习如何实现 data_pipeline 函数,将数据集划分为小批次。

在文本编辑器中打开 data_pipeline.py 文件。

根据以下要求实现 data_pipeline 函数:

  • 该函数应接受两个参数:data(一个包含整数的列表的列表)和 batch_size(一个表示每个小批次大小的整数)。
  • 该函数应返回一个生成器,生成输入数据的批次,其中每个批次包含 batch_size 个整数列表。
  • 如果剩余数据量小于 batch_size,该函数应输出所有剩余样本。

以下是完整的 data_pipeline 函数:

from typing import Generator, List

def data_pipeline(data: List[List[int]], batch_size: int) -> Generator[List[List[int]], None, None]:
    """
    此函数接受一个包含整数的列表的列表,并将其划分为指定大小的较小“批次”。
    它返回一个生成器,按顺序生成这些批次。

    参数:
    data (List[List[int]]):输入数据集,一个包含整数的列表的列表。
    batch_size (int):每个批次的大小,即每个批次中包含的整数列表的数量。

    返回:
    Generator[List[List[int]], None, None]:一个生成器,生成输入数据的批次,每个批次包含 `batch_size` 个整数列表。
    """
    for i in range(0, len(data), batch_size):
        batch_data = data[i : i + batch_size]
        yield batch_data

保存 data_pipeline.py 文件。

测试小批次

在这一步中,你将测试 data_pipeline 函数,以确保它按预期工作。

在文本编辑器中打开 data_pipeline.py 文件。

在文件末尾添加以下代码来测试 data_pipeline 函数:

if __name__ == "__main__":
    data = [[1, 2], [1, 3], [3, 5], [2, 1], [3, 3]]
    batch_size = 2
    batch_data = data_pipeline(data, batch_size)
    for batch in batch_data:
        print(f"{batch=}")

保存 data_pipeline.py 文件。

在终端中运行 data_pipeline.py 文件:

python data_pipeline.py

输出应该是:

batch=[[1, 2], [1, 3]]
batch=[[3, 5], [2, 1]]
batch=[[3, 3]]

此输出确认 data_pipeline 函数按预期工作,将输入数据集划分为大小为 2 的小批次。

总结

恭喜你!你已经完成了这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。

✨ 查看解决方案并练习✨ 查看解决方案并练习