写点什么

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

2019 年 2 月 27 日

谷歌开源机器学习数据集,可在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-datasetsimport tensorflow_datasets as tfdsmnist_data = tfds.load("mnist")mnist_train, mnist_test = mnist_data["train"], mnist_data["test"]assert isinstance(mnist_train, tf.data.Dataset)
复制代码


在 Colab notebook 上试试 tfds


tfds.loadDatasetBuilder


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



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


import tensorflow_datasets as tfds
# Fetch the dataset directlymnist = tfds.image.MNIST()# or by string namemnist = tfds.builder('mnist')
# Describe the dataset with DatasetInfoassert mnist.info.features['image'].shape == (28, 28, 1)assert mnist.info.features['label'].num_classes == 10assert mnist.info.splits['train'].num_examples == 60000
# Download the data, prepare it, and write it to diskmnist.download_and_prepare()
# Load data from disk as tf.data.Datasetsdatasets = 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 likefor 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文档


数据集版本管理

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


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


数据集配置

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


# See the built-in configsconfigs = tfds.text.IMDBReviews.builder_configsassert "bytes" in configs
# Address a built-in config with tfds.builderimdb = tfds.builder("imdb_reviews/bytes")# or when constructing the builder directlyimdb = tfds.text.IMDBReviews(config="bytes")# or use your own custom configurationmy_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 DatasetInfoencoder = imdb.info.features["text"].encoderassert isinstance(encoder, tfds.features.text.SubwordTextEncoder)
# Encode, decodeids = encoder.encode("Hello world")assert encoder.decode(ids) == "Hello world"
# Get the vocabulary sizevocab_size = encoder.vocab_size
复制代码


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


入门

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



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


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


原文链接:


https://medium.com/tensorflow/introducing-tensorflow-datasets-c7f01f7e19f3


2019 年 2 月 27 日 15:1011791
用户头像

发布了 98 篇内容, 共 56.7 次阅读, 收获喜欢 284 次。

关注

评论

发布
暂无评论
发现更多内容

微服务架构下,DLI的部署和运维有何奥秘?

华为云开发者社区

Docker 大数据 Serverless 数据湖 DLI

【写作群星榜】8.15~8.28 写作平台优秀作者 & 文章排名

InfoQ写作平台官方

写作平台 排行榜

涵盖多场景区块链与政务结合 应用前景广阔

CECBC区块链专委会

区块链 互联网 数字政务

架构师训练营0期11周

WW

usdt承兑跑分系统开发,区块链支付跑分系统搭建

WX13823153201

usdt承兑跑分系统开发

柔性电子拥有改变地球的能力吗?

脑极体

数据挖掘学习指南(转载)

Jackchang234987

数据挖掘 产品经理

新金融分布式架构之SOFAStack解决方案

阿里云金融线TAM SRE专家服务团队

币期权DAPP 8月28日全球同步耀世上线,掀起币圈追捧热潮

InfoQ_967a83c6d0d7

ShardingSphere简介+实战

云淡风轻

ShardingJDBC

分享一个阿里云轻量级开源前端图编排,流程图js组件——butterfly-dag

InfoQ_39ba186c207f

Java 流程图 flow canvas html/css

华为云会议的前世今生

华为云开发者社区

直播 云服务 华为云 视频编码 视频会议

GitMaster 更新v1.9.0,支持Gitea,Gist拥抱黑暗模式

neo

gitlab tree gitee GitHub、

开发者的福音,LR.NET模块化代码生成器

Philips

敏捷开发 快速开发 模块化流程 代码质量 .net core

【FCC前端教程】44关学习CSS与CSS3基础「二」

三钻

CSS 前端 FCC

MySQL redo与undo日志解析

Simon

MySQL Redo MySQL日志

硬核科技:莱克立式吸尘器,引领家居清洁“新态度”

InfoQ_967a83c6d0d7

LeetCode题解:155.最小栈,使用两个栈,详细注释

Lee Chen

LeetCode 前端进阶训练营

mPaaS 客户端证书错误避坑指南

阿里云金融线TAM SRE专家服务团队

我也没想到 Springboot + Flowable 开发工作流会这么简单

程序员内点事

java 14

不得不了解系列之限流

梦朝思夕

限流

全民加速节:动态加速在在线教育应用上的最佳实践

阿里云Edge Plus

在线教育 CDN

有为而治:平衡吞噬世界的系统之熵

IT民工大叔

屏幕共享接入指南

anyRTC开发者

WebRTC 在线教育 直播 RTC

化妆品行业与区块链的融合可减少甚至消除假冒伪劣

CECBC区块链专委会

区块链 化妆品

区块链 新基建定位下的新使命 2020新区势

CECBC区块链专委会

区块链 新基建

莱卡、宾利都在用,英特尔oneAPI渲染工具带来高质量视觉体验

新闻科技资讯

GrowingIO AWS 成本优化之路

GrowingIO技术专栏

AWS 成本优化

oeasy教您玩转linux010106这儿都有啥 ls

o

软件开发丨关于软件重构的灵魂四问

华为云开发者社区

软件 开发者 软件开发 代码 软件重构

学习Python真的能找到工作吗?

代码制造者

Python 程序员 编程语言 低代码 零代码

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