TensorFlow Datasets简介

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CbS0Nq7P-1574305383252)(https://cdn-images-1.medium.com/max/1600/1*SXwqxZm9rkZHS851jQrYJg.png)]
公共数据集为机器学习研究的快速发展提供了十足的动力(h/t Andrew Ng ),但仅将这些数据集放入机器学习管道仍然有诸多困难。 每个研究人员都经历了编写一次性脚本用来下载和准备他们使用的每个数据集的痛苦,这些数据集都具有不同的源格式和复杂性。

今天,我们很高兴推出TensorFlow Datasets(GitHub),它将公共研究数据集公开为tf.data.Datasets和NumPy数组。 它完成了获取源数据并将其准备为磁盘上的通用格式的所有工作,并使用tf.data API构建高性能输入管道,这些管道准备好TensorFlow 2.0并可与tf.keras模型一起使用。 我们推出了29个流行的研究数据集,如MNIST,街景房号,10亿字语言模型基准和大型电影评论数据集,并将在未来几个月增加更多; 我们希望您自己加入并添加数据集

tl;dr

# Install: pip install tensorflow-datasets
import tensorflow_datasets as tfds
mnist_data = tfds.load("mnist")
mnist_train, mnist_test = mnist_data["train"], mnist_data["test"]
assert isinstance(mnist_train, tf.data.Dataset)

Try tfds out in a Colab notebook.

tfds.load and DatasetBuilder

每个数据集都作为DatasetBuilder公开,它知道:

您可以直接实例化任何DatasetBuilders或使用tfds.builder通过字符串获取它们:

import tensorflow_datasets as tfds

# Fetch the dataset directly
mnist = tfds.image.MNIST()
# or by string name
mnist = tfds.builder('mnist')

# Describe the dataset with DatasetInfo
assert mnist.info.features['image'].shape == (28, 28, 1)
assert mnist.info.features['label'].num_classes == 10
assert mnist.info.splits['train'].num_examples == 60000

# Download the data, prepare it, and write it to disk
mnist.download_and_prepare()

# Load data from disk as tf.data.Datasets
datasets = mnist.as_dataset()
train_dataset, test_dataset = datasets['train'], datasets['test']
assert isinstance(train_dataset, tf.data.Dataset)

# And convert the Dataset to NumPy arrays if you'd like
for example in tfds.as_numpy(train_dataset):
  image, label = example['image'], example['label']
  assert isinstance(image, np.array)

as_dataset()接受一个batch_size参数,它将为您提供批量示例,而不是一次一个示例。 对于适合内存的小型数据集,您可以传递batch_size = -1以立即获取整个数据集作为tf.Tensor。 使用tfds.as_numpy()可以轻松地将所有tf.data.Datasets转换为可迭代的NumPy数组。

为方便起见,您可以使用tfds.load执行以上所有操作,tfds.load按名称获取DatasetBuilder,调用download_and_prepare()并调用as_dataset()。

import tensorflow_datasets as tfds

datasets = tfds.load("mnist")
train_dataset, test_dataset = datasets["train"], datasets["test"]
assert isinstance(train_dataset, tf.data.Dataset)

您也可以通过传递with_info = True轻松地从tfds.load获取DatasetInfo对象。 有关所有选项,请参阅API文档

Dataset Versioning

每个数据集都是版本化的(builder.info.version),这样您就可以放心,数据不会在您下面发生变化,并且结果是可重现的。 目前,我们保证如果数据发生变化,版本将会升级。

请注意,尽管我们保证在给定相同版本的情况下数据值和拆分是相同的,但我们目前不保证对同一版本的记录进行排序。

Dataset Configuration

具有不同变体的数据集使用命名的BuilderConfigs进行配置。 例如,大型电影评论数据集(tfds.text.IMDBReviews)可能对输入文本具有不同的编码(例如,纯文本,字符编码或子字编码)。 内置配置与数据集文档一起列出,可以通过字符串进行寻址,也可以传入您自己的配置。

# See the built-in configs
configs = tfds.text.IMDBReviews.builder_configs
assert "bytes" in configs

# Address a built-in config with tfds.builder
imdb = tfds.builder("imdb_reviews/bytes")
# or when constructing the builder directly
imdb = tfds.text.IMDBReviews(config="bytes")
# or use your own custom configuration
my_encoder = tfds.features.text.ByteTextEncoder(additional_tokens=['hello'])
my_config = tfds.text.IMDBReviewsConfig(
    name="my_config",
    version="1.0.0",
    text_encoder_config=tfds.features.text.TextEncoderConfig(encoder=my_encoder),
)
imdb = tfds.text.IMDBReviews(config=my_config)

请参阅有关添加数据集的文档中有关数据集配置的部分。

Text Datasets and Vocabularies

由于编码和词汇文件不同,文本数据集通常很难处理。 tensorflow-datasets使它更容易。 它包含许多文本任务,包括三种TextEncoders,所有这些都支持Unicode:

  • ByteTextEncoder用于字节/字符级编码

  • TokenTextEncoder用于基于词汇表文件的单词级编码

  • SubwordTextEncoder用于subword-level 级编码(以及构造调整到特定文本语料库的子词汇词汇的能力),具有字节级回退,因此它是完全可逆的。 例如,“hello world”可以分为[“he”,“llo”,“”,“wor”,“ld”],然后进行整数编码。 Subwords是词级和字节级编码之间的愉快媒介,在一些自然语言研究项目中很受欢迎.

可以通过DatasetInfo访问编码器及其词汇表大小:

imdb = tfds.builder("imdb_reviews/subwords8k")

# Get the TextEncoder from DatasetInfo
encoder = imdb.info.features["text"].encoder
assert isinstance(encoder, tfds.features.text.SubwordTextEncoder)

# Encode, decode
ids = encoder.encode("Hello world")
assert encoder.decode(ids) == "Hello world"

# Get the vocabulary size
vocab_size = encoder.vocab_size

TensorFlow和TensorFlow Datasets都将在未来进一步改进文本支持。

Getting started

我们的文档站点是开始使用tensorflow-datasets的最佳位置。 以下是一些入门指南:

我们希望在未来几个月内继续添加数据集,我们当然也希望社区的加入。打开GitHub Issue以请求数据集,对下一步应添加的数据集进行投票,讨论实施或寻求帮助。 和拉请求非常欢迎! 添加一个流行的数据集以便为社区做出贡献,或者如果您有自己的数据,请将其贡献给TFDS以使您的数据着名!

现在数据很简单,你可以快乐的建模!

Acknowledgements

TensorFlow数据集是一项团队工作。 我们的核心开发人员是Etienne Pot,Afroz Mohiuddin,Pierre Ruyssen,Marcin Michalski和Ryan Sepassi。我们还要感谢Jiri Simsa对tf.data的帮助,感谢Martin Wicke对该项目的支持。 谢谢大家!

我们要感谢牛津大学的Stefan Webb允许我们使用tensorflow-datasets PyPI名称。 谢谢Stefan!

我们还要感谢Lukasz Kaiser和Tensor2Tensor项目,以激励和指导tensorflow/datasets。 谢谢Lukasz! T2T将很快迁移到tensorflow/datasets。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: TensorFlow Datasets是一个开源的数据集库,提供了许多常用的机器学习数据集,包括图像分类、自然语言处理、语音识别等领域。这些数据集可以直接在TensorFlow中使用,方便用户进行模型训练和评估。TensorFlow Datasets还提供了数据预处理、数据增强等功能,帮助用户更好地处理数据。同时,TensorFlow Datasets还支持自定义数据集的导入和使用,方便用户使用自己的数据集进行机器学习。 ### 回答2: TensorFlow Datasets(简称TFDS)是由TensorFlow团队提供的可用于深度学习的开放数据集合。TFDS旨在提供方便的数据集标准化、深度学习数据管道和易于使用的API。使用TFDS可以省去获取、清理、格式化和存储数据的过程,使深度学习的数据处理过程更加简便,节省时间。 TFDS包含许多常用的数据集,例如ImageNet、CIFAR-10、MNIST等。它们都按照标准格式进行了预处理,并可以通过API进行快速和方便的访问。TFDS还包含许多不同领域的数据集,比如自然语言处理、机器翻译、物体识别等等,可以满足多种场景下的需求。 除此之外,TFDS还提供了数据集加载、数据集转换和数据集元数据等功能。数据集加载功能可用于加载TFDS中提供的数据集;数据集转换功能可用于对数据集进行处理和改变数据集的格式;数据集元数据功能可用于显示数据集的信息和属性。 总之,TFDS提供了许多预处理过的数据集,并提供易于使用的API来读取和管理数据。使用TFDS可以大大简化深度学习数据处理的过程,让研究人员可以更加专注于模型的开发和训练。 ### 回答3: TensorFlow Datasets(TFDS)是一个丰富的、易于使用的开源数据集库,可在 TensorFlow 中使用。它提供了许多经过预处理的数据集,适用于机器学习和其他相关领域的研究。 TFDS 的优势在于它提供了高质量的数据集和统一的数据加载方式,使得开发者可以快速地开始实现机器学习项目。TFDS 不仅提供了常见的图像和语音数据集,还提供了各种其他类型的数据集,如文本、结构化数据、序列等。这些数据集可以用于各种任务,例如分类、回归、聚类、生成等。 使用 TFDS 有许多好处。首先,TFDS 中的数据集都经过了良好的预处理,例如归一化、标准化和缩放,以便于机器学习模型的训练。其次,数据集统一了加载方式,让使用者不需要关注数据的解析和转换,从而节省了很多时间和精力。此外,TFDS 还提供了一些方便的功能,例如数据集分割、随机化、批处理和预处理,以便于开发者更轻松地处理数据。 总之,TFDS 是一个非常有用的工具,可以帮助机器学习从业者更有效地进行数据预处理和模型训练。使用 TFDS,我们可以轻松地获取和加载各种类型的数据集,并将其应用于机器学习项目中。随着时间的推移,TFDS 将继续增长和扩展,为整个机器学习社区提供更丰富、更高质量的数据集。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值