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'])