介绍
在这个项目中,你将学习如何实现一个将数据集划分为小批次的函数,这是深度学习训练中常用的一种技术。
🎯 任务
在这个项目中,你将学习:
- 如何实现
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 中练习更多实验来提升你的技能。



