TensorFlow Datasets 四周年!
2023 年 2 月 16 日

TensorFlow Datasets 团队发布

自大约四年前TensorFlow Datasets (TFDS) 发布以来,数据集领域发生了巨大变化:TFDS 使得共享或重复使用数据集变得前所未有的简单,并通过激发其他机器学习工具、库和服务,改变了数据集格局。

加载数据集从复杂的脚本演变为

import tensorflow_datasets as tfds ds = tfds.load('mnist', split='train') for example in ds: # example is `{'image': tf.Tensor, 'label': tf.Tensor}` print(list(example.keys())) image = example["image"] label = example["label"] print(image.shape, label)

阅读文档以获得更深入的介绍。

多年来,TFDS 已成为加载数据集的公认方式。为了庆祝我们最新的 4.8.2 版本发布,我们想花点时间回顾一下这些年来取得的进展和改进,并感谢社区的支持。

TFDS 仍然是一个库,用于简化机器学习管道的数据集下载、准备和加载,但现在它支持数百个数据集,并提供以下主要功能

  1. 各种各样的具有编码和解码功能,涵盖从文本到图像、视频、音频,甚至包括强化学习专用类型(例如,数据集的集合)。
  2. 大型数据集支持:TFDS 成功应用于 Google 内部,用于使用高性能输入管道准备和加载大型数据集(PB 级)。
  3. 数据集集合,可以随意将多个现有 TFDS 数据集组合在一起,例如用于基准测试。
  4. 支持所有主要的机器学习 Python 框架:虽然 “TFDS” 中包含 “TF”,但除了 TensorFlow 之外,还可以将 TFDS 与 Torch、Jax、NumPy、Keras 和任何其他可以使用 **tf.data.Dataset 或 NumPy Iterator** 的 Python 机器学习框架一起使用
  5. 准备时间全局洗牌:洗牌训练数据是一种良好的实践,TFDS 在准备时间可以选择性地进行全局洗牌,以防数据源本身没有进行洗牌。
  6. 拆分和切片:数据集可以指定其拆分,而读取器可以指定它们想要读取的拆分(或拆分的切片),例如:test[:10%] 表示“加载测试拆分的最初 10%”。
  7. 版本控制和确定性:TFDS 数据集和集合具有版本控制,因此可以可靠地重现实验。加载固定在特定版本的特定版本的数据集将始终返回相同的示例集。这对于切片和全局洗牌也是有效的,因为它们是确定性的。
  8. 无需代码共享:即使用于准备数据集的代码不可用,TFDS 也可以读取 TFDS 准备好的数据集。这有利于共享和版本控制数据集。
  9. 社区数据集和对组织内部数据集的支持:TFDS 允许组织管理不同的数据集集合,并将其提供给其内部用户使用。
  10. 格式专用构建器:可以轻松地基于 CoNLL 等知名格式定义数据集。
  11. GCS 集成:TFDS 与 GCS 协同良好。

感谢我们所有的贡献者和用户!

下一步是什么?

TFDS 正在积极开发中,旨在为您提供最佳数据集,作为机器学习管道的输入。

值得注意的是,我们正在努力使转换变得无缝。有时,一个数据集是从另一个数据集通过一些转换(例如,数据增强或列重命名)派生的。我们希望这些转换尽可能容易实现。此功能目前已处于实验阶段,请随时在GitHub 上提供反馈!

我们还在努力使 TensorFlow 依赖项成为可选的。TFDS 是一个与框架无关的库,提供数据集和工具来支持机器学习研究。TFDS 不依赖于任何特定的机器学习框架,我们正在努力使 TensorFlow 依赖项成为可选的。

我们还有其他计划,例如更小的计划,如支持分区数据集,以及可能对该领域产生持久影响的长期计划。关注我们的GitHub 账号,获取有关这些即将发布的开发的最新消息!

下一篇文章
TensorFlow Datasets is turning 4!

TensorFlow Datasets 团队发布 自大约 4 年前 TensorFlow Datasets (TFDS) 推出以来,数据集领域发生了很大变化:TFDS 使得共享或重用数据集变得更加容易,并通过激励其他 ML 工具、库和服务来改变数据集领域。 加载数据集从复杂的脚本转变为:import tensorflow_datasets as tfds ds = tfds.load…