谷歌开源机器学习数据集,可在 TensorFlow 直接调用

栏目: 数据库 · 发布时间: 5年前

内容简介:吴恩达说过,公共数据集为机器学习研究这枚火箭提供了动力,但将这些数据集放入机器学习管道就已经够难的了。编写供下载的一次性脚本,准备他们要用的源格式和复杂性不一的数据集,相信这种痛苦每个程序员都有过切身体会。但现在,你再也不会被这种痛苦困扰了。谷歌今天开源了一个机器学习数据集,可在 TensorFlow 直接调用,这为开发人员省去了不少麻烦。照例先放数据集:

吴恩达说过,公共数据集为机器学习研究这枚火箭提供了动力,但将这些数据集放入机器学习管道就已经够难的了。编写供下载的一次性脚本,准备他们要用的源格式和复杂性不一的数据集,相信这种痛苦每个 程序员 都有过切身体会。

但现在,你再也不会被这种痛苦困扰了。谷歌今天开源了一个机器学习数据集,可在 TensorFlow 直接调用,这为开发人员省去了不少麻烦。

照例先放数据集:

GitHub: https://github.com/tensorflow/datasets

今天,我们很高兴地推出 TensorFlow 数据集,它将作为 tf.data.Datasets 和 NumPy 数组向公众开放。它可以完成从获取源数据,到准备磁盘上的通用格式的所有琐碎工作,并使用 tf.data API 构建高性能输入管道,这些管道支持 TensorFlow 2.0,并可与 tf.keras 模型一起使用。我们推出了 29 个流行的研究 数据集 ,如 MNIST、Street View House Numbers、包含 10 亿数据的语言模型基准和大型电影评论数据集,并将在未来几个月推出更多数据集;我们也希望你可以 加入并贡献数据集

tl;dr

复制代码

# Install: pip install tensorflow-datasets
importtensorflow_datasetsastfds
mnist_data= tfds.load("mnist")
mnist_train, mnist_test = mnist_data["train"], mnist_data["test"]
assertisinstance(mnist_train, tf.data.Dataset)

在 Colab notebook 上试试 tfds

tfds.loadDatasetBuilder

每个数据集都作为 DatasetBuilder 公开,它会告诉你:

你可以直接对所有 DatasetBuilders 进行实例化或使 用 tfds.builder 字符串获取

复制代码

importtensorflow_datasetsastfds

#Fetchthe dataset directly
mnist = tfds.image.MNIST()
#orbystringname
mnist = tfds.builder('mnist')

# Describe the datasetwithDatasetInfo
assertmnist.info.features['image'].shape == (28,28,1)
assertmnist.info.features['label'].num_classes ==10
assertmnist.info.splits['train'].num_examples ==60000

# Download the data,prepareit,andwriteittodisk
mnist.download_and_prepare()

#Loaddatafromdiskastf.data.Datasets
datasets = mnist.as_dataset()
train_dataset, test_dataset = datasets['train'], datasets['test']
assertisinstance(train_dataset, tf.data.Dataset)

#Andconvert the DatasettoNumPy arraysifyou'd like
for example in tfds.as_numpy(train_dataset):
image, label = example['image'], example['label']
assert isinstance(image, np.array)
{1}

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()。

复制代码

importtensorflow_datasetsastfds

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

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

数据集版本管理

每个数据集都是版本化的(builder.info.version),你大可放心,数据不会随意发生变化,且结果是可重现的。目前,我们保证如果数据发生变化,将增加版本。

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

数据集配置

具有不同变体的数据集使用命名的 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)

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

文本数据集和词汇表

由于编码和词汇文件不同,文本数据集通常很难处理。tensorflow-datasets 让这一过程变得更简单。它包含许多文本任务,包括三种 TextEncoders,且都支持 Unicode:

  • ByteTextEncoder 用于字节 / 字符级编码
  • TokenTextEncoder 用于基于词汇表文件的单词级编码
  • SubwordTextEncoder 用于子词级编码(以及针对特定文本语料库创建子词词汇的能力),可以字节级回退,因此它是完全可逆的。例如,“hello world”可以拆分为 [“he”,“llo”,“”,“wor”,“ld”],然后进行整数编码。子词是词级和字节级编码之间的媒介,在一些自然语言研究项目中很受欢迎。

可以通过 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 数据集都将在未来进一步改进文本支持。

入门

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

我们将在未来几个月内添加更多数据集,并希望社区能够加入。如果你需要什么数据集,请在 GitHub 创建话题 ,我们将对下一步应添加的数据集进行投票,讨论实施细节或寻求帮助。非常欢迎 Pull Requests!人人献出一点数据集,让社区变得更美好,把你的数据集贡献给 TFDS 声名大噪吧!

当获取数据变得简单,我们就能快乐地建模!


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Beginning Google Maps API 3

Beginning Google Maps API 3

Gabriel Svennerberg / Apress / 2010-07-27 / $39.99

This book is about the next generation of the Google Maps API. It will provide the reader with the skills and knowledge necessary to incorporate Google Maps v3 on web pages in both desktop and mobile ......一起来看看 《Beginning Google Maps API 3》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换