目录
一、tf.data简介
借助tf.data,构建输入管道(将数据加载到模型)。
tf.data在TensorFlow中引入两个新的抽象类:tf.data.Dataset、tf.data.Iterator.
Dataset:创建和转化datasets的基类。初始化dataset两种方式:从内存读取数据,从Python生成器读取数据。
TextLineDataset:从text文件中读取数据,创建dataset。
FTRecordDataset:从TFRecord文件中读取数据,创建dataset。
FixedLengthRecordDataset:从二进制文件中读取固定大小的记录,创建dataset。
Iterator:获取dataset中的元素。
二、读取数据
1、从内存中读取数据-numpy数组
适合小型数据集,将所有数据加载到numpy数组中,使用tf.data.Dataset.from_tensor_slices()创建Dataset。
# Load the training data into two NumPy arrays, for example using `np.load()`.
with np.load("/var/data/training_data.npy") as data:
features = data["features"]
labels = data["labels"]
# Assume that each row of `features` corresponds to the same row as `labels`.
assert features.shape[0] == labels.shape[0]
dataset = tf.data.Dataset.from_tensor_slices((features, labels))
2、从文件中读取数据
tf.data支持多种文件格式,可以处理那些不适合存储在内存中的大型数据集。
通过tf.data.TFRecordDataset类,读取tfrecord文件:
# Creates a dataset that reads all of the examples from two files.
filenames = ["/var/data/file1.tfrecord", "/var/data/file2.tfrecord"]
dataset = tf.data.TFRecordDataset(filenames)
通过tf.data.TextLineDataset类,读取文本文件:
filenames = ["/var/data/file1.txt", "/var/data/file2.txt"]
dataset = tf.data.TextLineDataset(filenames)
通过tf.contrib.data.CsvDataset类,读取csv文件: