TensorFlow-Slim 提供了为从各种格式中加载数据的库,如:TFRecords Text等。在读取tensorlow tfrecord文件时,可以使用tensorflow直接读取,另外一种方法即使用slim中高级封装读取。
加载数据任务主要完成两个过程:
1.说明数据怎么表述,这样它能够被读取以及可以被解释
2.说明怎么为使用者提供数据。我们应该说明数据怎么提供以及怎么存储在内存中。如当数据被多个程序共享,数据是否需要被并行或者串行读入,数据是否需要被打乱。
在TF-slim中数据集的定义:一系列代表有限样本的集合,样本可以是文本文件或者高级编码的文件,或者单个项目多个项目如:图片,类标签,场景标签。简单来说 TF-Slim'dataset 就是一个元组包含如下说明数据的成员:
1.data_sources:A list of file paths that together make up the dataset
2.reader; A TensorFlow Reader appropiate for the file type in data_sources
3.decoder:A TF-Slim data_decoder class whic is used to decode the content of the read dataset files
4.num_samples:The number of samples in the dataset
5. items_to_descriptions:A map from the items provided by the dataset to decriptions of each
总而言之读取数据的过程包括:使用指定的数据读取器打开数据源文件,解码文件使用给定的解码器,使用者获取需要的成员
Dataset为一个类,包括如下几个成员:
1.数据源列表
2.阅读器。阅读器能读取数据源,并且能尽量换回被编码的数据
3.解码器。解码器用来解码阅读器返回的每一个样例。
4.样例总数量。
5.可选字典。该字典映射返回项目的列表和这些项目的描述。
数据可以通过slim中的dataset_data_provider从dataset中读取。如下所示:
dataset = CreateMyDataset(...)
provider = dataset_data_provider.DatasetDataProvider(dataset, shuffle=False)
image, label = provider.get(['image', 'label'])