深度学习的数据预处理:使用 Tensorflow 优化数据管道的技巧和窍门
如何使用批处理、预取、流式传输、缓存和迭代器优化数据处理管道
来源:AI夏令营数据预处理是构建机器学习应用程序不可或缺的一部分。然而,大多数机器学习工程师并没有花费适当的时间,因为有时它可能很困难且乏味。尤其是在深度学习方面,我们必须处理的数据量使得这样做更加困难。当然,这还不足以构建数据管道,我们还必须使其尽可能高效和快速。
正如我们在上一篇文章中看到的,数据管道遵循 ETL 范式。ETL 是首字母缩略词,代表提取、转换、加载。上次我们探索了前两部分(E、T),并了解了如何使用 TensorFlow 从多个数据源提取数据并将其转换为我们想要的格式。我们还讨论了函数式编程,以及它在构建输入管道时如何非常方便,因为我们可以以链的形式指定所有转换。
上一篇文章 提取、转换、加载这次,我们将讨论管道的最后一部分,即加载。加载本质上意味着将我们的数据输入深度学习模型进行训练或推理。但我们将更进一步,因为我们还将关注如何通过批处理、预取和缓存等技术,使管道在速度和硬件利用率方面具有高性能。
加载 如何使管道具有高性能 批处理 预取 缓存事不宜迟,让我们开始加载。但在此之前,让我提醒您我们在整个文章系列中遇到的最初问题。 Tl;dr:我们正在尝试将对图像执行语义分割的 Jupyter 笔记本转换为可用于生产的代码,并将其部署到云中。就我们使用的数据而言,它们是牛津大学借来的宠物图像集合。请注意,您可以在我们的 GitHub 存储库中找到我们迄今为止的整个代码库。
Tl;dr: 语义分割 GitHub 存储库