tf.Data
作用:根据简单的可重用的片段构建复杂的输入管道
介绍一下俩个主要的抽象类:
1. Dataset: 一系列元素, 每个元素包含一个或者多个Tensor对象,这些对象称之为组件,每个组件都有一个tf.DType, tf.TensorShape
2. Iterator:从数据集中提取元素的主要方法。
Iterator.get_next()会在执行的时候生成下一个元素
迭代器类型如下:
单次
可初始化
可重新初始化
可馈送
基本机制
启动输入管道步骤:
1. 定义来源,
如果 要从内存中构建Dataset,则可以使用tf.data.Dataset.from_tensors()或者tf.data.Dataset.from_tensor_slices()。
如果输入数据是在磁盘上并且以TFRecord格式存储在磁盘上的话,使用tf.data.TFRecordDataset。
2. 转换为新的Dataset
单元素转换map
多元素转换batch
3. 定义迭代器对象消费Dataset
读取输入数据
1. NumPy数组
如果输入数据都在内存中
1.1 可以简单地将他们转成Tensor, 并使用Dataset.from_tensor_slices()
会将数据作为tf.constant()存在图中,适合小数据集
内存浪费
1.2 根据tf.placeholder()张量定义Dataset, 并在数据集初始化Iterator时馈送NumPy数组
code:
2. TFRecord数据
tf.data.TFRecordDataset
3. 文本数据
tf.data.TextLineDataset()
4. CSV数据
tf.contrib.data.CsvDataset
使用Dataset.map()预处理数据
许多输入管道都从TFRecord格式文件中提取tf.train.Example协议缓冲区消息
网友评论