用法
snapshot(
path, compression='AUTO', reader_func=None, shard_func=None, name=None
)
參數
-
path
必需的。用於將快照存儲/加載到/從的目錄。 -
compression
可選的。應用於寫入磁盤的快照的壓縮類型。支持的選項是GZIP
,SNAPPY
,AUTO
或無。默認為AUTO
,它嘗試為數據集選擇適當的壓縮算法。 -
reader_func
可選的。控製如何從快照分片中讀取數據的函數。 -
shard_func
可選的。控製在寫入快照時如何分片數據的函數。 -
name
(可選。) tf.data 操作的名稱。
返回
-
一個
Dataset
。
用於持久化輸入數據集輸出的 API。
快照 API 允許用戶透明地將其預處理管道的輸出保存到磁盤,並在不同的訓練運行中實現預處理數據。
此 API 可以整合重複的預處理步驟,並允許重新使用已處理的數據,以犧牲磁盤存儲和網絡帶寬來釋放更多寶貴的 CPU 資源和加速器計算時間。
https://github.com/tensorflow/community/blob/master/rfcs/20200107-tf-data-snapshot.md具有此函數的詳細設計文檔。
用戶可以指定各種選項來控製快照的行為,包括通過將用戶定義的函數傳遞給reader_func
和shard_func
參數來讀取和寫入快照的方式。
shard_func
是用戶指定的函數,用於將輸入元素映射到快照分片。
用戶可能希望指定此函數來控製快照文件應如何寫入磁盤。下麵是如何編寫潛在的shard_func
的示例。
dataset = ...
dataset = dataset.enumerate()
dataset = dataset.snapshot("/path/to/snapshot/dir",
shard_func=lambda x, y:x % NUM_SHARDS, ...)
dataset = dataset.map(lambda x, y:y)
reader_func
是用戶指定的函數,它接受單個參數:(1) 數據集的數據集,每個數據集代表原始數據集元素的 "split"。輸入數據集的基數與 shard_func
中指定的分片數量相匹配(見上文)。該函數應返回原始數據集元素的數據集。
用戶可能希望指定此函數來控製應如何從磁盤讀取快照文件,包括混洗量和並行度。
這是用戶可以定義的標準閱讀器函數的示例。此函數啟用數據集洗牌和數據集的並行讀取:
def user_reader_func(datasets):
# shuffle the datasets splits
datasets = datasets.shuffle(NUM_CORES)
# read datasets in parallel and interleave their elements
return datasets.interleave(lambda x:x, num_parallel_calls=AUTOTUNE)
dataset = dataset.snapshot("/path/to/snapshot/dir",
reader_func=user_reader_func)
默認情況下,快照按係統上可用的核心數並行讀取,但不會嘗試對數據進行混洗。
相關用法
- Python tf.data.experimental.CsvDataset.shard用法及代碼示例
- Python tf.data.experimental.CsvDataset.skip用法及代碼示例
- Python tf.data.experimental.CsvDataset.shuffle用法及代碼示例
- Python tf.data.experimental.CsvDataset.scan用法及代碼示例
- Python tf.data.experimental.CsvDataset.sample_from_datasets用法及代碼示例
- Python tf.data.experimental.CsvDataset.window用法及代碼示例
- Python tf.data.experimental.CsvDataset.apply用法及代碼示例
- Python tf.data.experimental.CsvDataset.flat_map用法及代碼示例
- Python tf.data.experimental.CsvDataset.random用法及代碼示例
- Python tf.data.experimental.CsvDataset.cardinality用法及代碼示例
- Python tf.data.experimental.CsvDataset.interleave用法及代碼示例
- Python tf.data.experimental.CsvDataset.group_by_window用法及代碼示例
- Python tf.data.experimental.CsvDataset.as_numpy_iterator用法及代碼示例
- Python tf.data.experimental.CsvDataset.from_generator用法及代碼示例
- Python tf.data.experimental.CsvDataset.range用法及代碼示例
- Python tf.data.experimental.CsvDataset.unique用法及代碼示例
- Python tf.data.experimental.CsvDataset.choose_from_datasets用法及代碼示例
- Python tf.data.experimental.CsvDataset.batch用法及代碼示例
- Python tf.data.experimental.CsvDataset.enumerate用法及代碼示例
- Python tf.data.experimental.CsvDataset.from_tensors用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.data.experimental.CsvDataset.snapshot。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。