深度学习系列教程(六)tf.data API 使用方法介绍

"玩转TensorFlow与深度学习模型”系列文字教程,本周带来tf.data 使用方法介绍

大家在学习和实操过程中,有任何疑问都可以通过学院微信交流群进行提问,有导师和助教、大牛等为您解惑答疑哦。(入群方式在文末

第六篇的教程主要内容:TensorFlow 数据导入 (tf.data API 使用介绍)。

tf.data 简介

以往的TensorFLow模型数据的导入方法可以分为两个主要方法,一种是使用另外一种是使用TensorFlow中的。前者使用起来比较灵活,可以利用Python处理各种输入数据,劣势也比较明显,就是程序运行效率较低;后面一种方法的效率较高,但是使用起来较为复杂,灵活性较差。

作为新的API,比以上两种方法的速度都快,并且使用难度要远远低于使用。中包含了两个用于TensorFLow程序的接口:和。

Dataset(数据集) API 在 TensorFlow 1.4版本中已经从迁移到了之中,增加了对于Python的生成器的支持,官方强烈建议使用Dataset API 为 TensorFlow模型创建输入管道,原因如下:

与旧 API( 或队列式管道)相比,Dataset API 可以提供更多功能。

Dataset API 的性能更高。

Dataset API 更简洁,更易于使用。

将来 TensorFlow 团队将会将开发中心放在Dataset API而不是旧的API上。

Dataset

表示一个元素的集合,可以看作函数式编程中的 lazy list, 元素是tensor tuple。创建的方式可以分为两种,分别是:

Source

Apply transformation

Source

这里 source 指的是从对象创建,常见的方法又如下几种:

作用分别为:从一个tensor tuple创建一个单元素的dataset;从一个tensor tuple创建一个包含多个元素的dataset;读取一个文件名列表,将每个文件中的每一行作为一个元素,构成一个dataset;读取硬盘中的格式文件,构造dataset。

Apply transformation

第二种方法就是通过转化已有的dataset来得到新的dataset,TensorFLow支持很多中变换,在这里介绍常见的几种:

以上三种方式分别表示了:使用map对dataset中的每个元素进行处理,这里的例子是对图片数据进行解码;将dataset重复一定数目的次数用于多个epoch的训练;将原来的dataset中的元素按照某个数量叠在一起,生成mini batch。

TensorFlow 1.4 版本中还允许用户通过Python的生成器构造dataset,如:

将以上代码组合起来,我们可以得到一个常用的代码片段:

Iterator

定义好了数据集以后可以通过Iterator接口来访问数据集中的tensor tuple,iterator保持了数据在数据集中的位置,提供了访问数据集中数据的方法。

可以通过调用 dataset 的 make iterator 方法来构建 iterator。

API 支持以下四种 iterator,复杂程度递增:

one-shot

initializable

reinitializable

feedable

one-shot

one-shot iterator 谁最简单的一种 iterator,仅支持对整个数据集访问一遍,不需要显式的初始化。one-shot iterator 不支参数化。以下代码使用生成数据集,作用与 python 中的 range 类似。

initializable

Initializable iterator 要求在使用之前显式的通过调用操作初始化,这使得在定义数据集时可以结合传入参数,如:

reinitializable

reinitializable iterator 可以被不同的 dataset 对象初始化,比如对于训练集进行了shuffle的操作,对于验证集则没有处理,通常这种情况会使用两个具有相同结构的dataset对象,如:

feedable

feedable iterator 可以通过和结合在一起,同通过机制来选择在每次调用的时候选择哪种。它提供了与 reinitilizable iterator 类似的功能,并且在切换数据集的时候不需要在开始的时候初始化iterator,还是上面的例子,通过来定义一个 feedable iterator,达到切换数据集的目的:

代码示例

这里举一个读取、解码图片,并且将图片的大小进行调整的例子:

更多的代码和详细说明请参见参考资料。

参考资料

TensorFlow官方文档

Google开发者中文博客-宣布 TensorFlow r1.4

下周一同一时间"玩转TensorFlow与深度学习模型"系列教程(七):TensorBoard及模型保存

,请大家保持关注!

TensorFlow与深度学习模型系列教程

加入社群

天学网人工智能学院

培养符合企业需求的实战型AI人才

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171218B0NFBT00?refer=cp_1026

同媒体快讯

相关快讯

扫码关注云+社区