當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.data.TFRecordDataset用法及代碼示例


Dataset 包含來自一個或多個 TFRecord 文件的記錄。

繼承自:Dataset

用法

tf.data.TFRecordDataset(
    filenames, compression_type=None, buffer_size=None, num_parallel_reads=None,
    name=None
)

參數

  • filenames 一個 tf.string 張量或 tf.data.Dataset 包含一個或多個文件名。
  • compression_type (可選。)tf.string 標量評估為 ""(無壓縮)、"ZLIB""GZIP" 之一。
  • buffer_size (可選。)tf.int64 標量,表示讀取緩衝區中的字節數。如果您的輸入管道存在 I/O 瓶頸,請考慮將此參數設置為 1-100 MB 的值。如果 None ,則使用本地和遠程文件係統的合理默認值。
  • num_parallel_reads (可選。)tf.int64 標量,表示要並行讀取的文件數。如果大於1,則以交錯的順序輸出並行讀取的文件記錄。如果您的輸入管道存在 I/O 瓶頸,請考慮將此參數設置為大於 1 的值以並行化 I/O。如果 None ,文件將被順序讀取。
  • name (可選。) tf.data 操作的名稱。

拋出

  • TypeError 如果任何參數不具有預期的類型。
  • ValueError 如果任何參數不具有預期的形狀。

屬性

  • element_spec 此數據集元素的類型規範。
    dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3])
    dataset.element_spec
    TensorSpec(shape=(), dtype=tf.int32, name=None)

    如需更多信息,請閱讀本指南。

這個數據集從文件中加載 TFRecords 作為字節,就像它們被寫入一樣。 TFRecordDataset 不會自行進行任何解析或解碼。可以通過在 TFRecordDataset 之後應用 Dataset.map 轉換來完成解析和解碼。

下麵給出了一個最小的例子:

import tempfile
example_path = os.path.join(tempfile.gettempdir(), "example.tfrecords")
np.random.seed(0)
# Write the records to a file.
with tf.io.TFRecordWriter(example_path) as file_writer:
  for _ in range(4):
    x, y = np.random.random(), np.random.random()

    record_bytes = tf.train.Example(features=tf.train.Features(feature={
        "x":tf.train.Feature(float_list=tf.train.FloatList(value=[x])),
        "y":tf.train.Feature(float_list=tf.train.FloatList(value=[y])),
    })).SerializeToString()
    file_writer.write(record_bytes)
# Read the data back out.
def decode_fn(record_bytes):
  return tf.io.parse_single_example(
      # Data
      record_bytes,

      # Schema
      {"x":tf.io.FixedLenFeature([], dtype=tf.float32),
       "y":tf.io.FixedLenFeature([], dtype=tf.float32)}
  )
for batch in tf.data.TFRecordDataset([example_path]).map(decode_fn):
  print("x = {x:.4f},  y = {y:.4f}".format(**batch))
x = 0.5488,  y = 0.7152
x = 0.6028,  y = 0.5449
x = 0.4237,  y = 0.6459
x = 0.4376,  y = 0.8918

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.data.TFRecordDataset。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。