TensorFlow Datasets介绍

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”


:TensorFlow

编译:ronghuaiyang

前戏

本文介绍了TensorFlow的Datasets,可以利用这个非常方便的使用内置的数据集。

640?wx_fmt=png

公共数据集推动了机器学习研究的飞速发展(h/t Andrew Ng),但是仍然很难将这些数据集简单地放入机器学习的pipeline中。每个研究人员都要经历编写一次性脚本的痛苦,以便下载和准备他们使用的每个数据集,这些数据集都有不同的源格式和复杂性。以后不会再这样了。

今天,我们很高兴介绍TensorFlow的Datasets(GitHub),它将公开的公共研究数据集作为 tf.data.Datasets,并且作为NumPy数组。它完成了所有的繁琐工作,包括获取源数据并将其准备成磁盘上的通用格式,它使用了 tf.data API来构建高性能的输入pipeline,这为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)

tfds.load 和 DatasetBuilder

每个数据集都公开为一个DatasetBuilder,需要知道:

  • 从何处下载数据,以及如何提取数据并将其写入标准格式( DatasetBuilder.download_and_prepare)。

  • 如何从磁盘加载它( DatasetBuilder.as_dataset)。

  • 所有关于数据集的信息,如所有特征的名称、类型和形状、每个分割中的记录数量、源url、数据集或相关论文的引用等( DatasetBuilder.info)。

你可以直接实例化任何一个数据生成器,或者用 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的形式获得整个数据集。所有的 tf.data.Datasets,都可以使用 tfds.as_numpy()轻松地将数据集转换为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)

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

数据集版本控制

每个数据集都有版本控制(' build .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)

请参阅关于添加数据集的文档中的dataset configuration。

文本数据集和词汇表

由于不同的编码和词汇表文件,使用文本数据集常常很困难。 tensorflow-datasets让它变得容易得多。它附带了很多文本任务,包括三种TextEncoders,都支持Unicode:

  • 字节/字符级编码的 ByteTextEncoder

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

  • 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 Datasets都将在未来进一步改进对文本的支持。

开始

我们的文档站点是开始使用 tensorflow-datasets的最佳位置。下面是一些额外的建议:

  • Datasets page

  • API docs

  • Colab tutorial

  • How to add a dataset

  • GitHub

我们希望在接下来的几个月里增加数据集,我们希望社区也能加入进来。打开一个GitHub Issue来请求一个数据集,投票决定下一步应该添加哪个数据集,讨论实现,或者请求帮助。添加一个流行的数据集来贡献给社区,或者如果你有自己的数据,将它贡献给TFDS,使你的数据出名!

640?wx_fmt=png— END—

英文原文:https://medium.com/tensorflow/introducing-tensorflow-datasets-c7f01f7e19f3

640?wx_fmt=jpeg

请长按或扫描二维码关注本公众号

喜欢的话,请给我个好看吧640?wx_fmt=gif

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。
### 回答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、付费专栏及课程。

余额充值