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


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

來自一個或多個二進製文件的固定長度記錄的Dataset

繼承自:Dataset

用法

tf.data.FixedLengthRecordDataset(
    filenames, record_bytes, header_bytes=None, footer_bytes=None, buffer_size=None,
    compression_type=None, num_parallel_reads=None, name=None
)

參數

  • filenames 一個 tf.string 張量或 tf.data.Dataset 包含一個或多個文件名。
  • record_bytes 一個 tf.int64 標量,表示每條記錄中的字節數。
  • header_bytes (可選。)tf.int64 標量,表示在文件開頭要跳過的字節數。
  • footer_bytes (可選。)tf.int64 標量,表示文件末尾要忽略的字節數。
  • buffer_size (可選。)tf.int64 標量,表示讀取時要緩衝的字節數。
  • compression_type (可選。)tf.string 標量評估為 ""(無壓縮)、"ZLIB""GZIP" 之一。
  • num_parallel_reads (可選。)tf.int64 標量,表示要並行讀取的文件數。如果大於1,則以交錯的順序輸出並行讀取的文件記錄。如果您的輸入管道存在 I/O 瓶頸,請考慮將此參數設置為大於 1 的值以並行化 I/O。如果 None ,文件將被順序讀取。
  • name (可選。) tf.data 操作的名稱。

屬性

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

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

tf.data.FixedLengthRecordDataset 從二進製文件中讀取固定長度的記錄並創建一個數據集,其中每條記錄都成為數據集的一個元素。二進製文件可以有一個固定長度的標題和一個固定長度的頁腳,它們都將被跳過。

例如,假設我們有 2 個文件 "fixed_length0.bin" 和 "fixed_length1.bin",內容如下:

with open('/tmp/fixed_length0.bin', 'wb') as f:
  f.write(b'HEADER012345FOOTER')
with open('/tmp/fixed_length1.bin', 'wb') as f:
  f.write(b'HEADER6789abFOOTER')

我們可以從它們構造一個FixedLengthRecordDataset,如下所示:

dataset1 = tf.data.FixedLengthRecordDataset(
    filenames=['/tmp/fixed_length0.bin', '/tmp/fixed_length1.bin'],
    record_bytes=2, header_bytes=6, footer_bytes=6)

數據集的元素是:

for element in dataset1.as_numpy_iterator():
  print(element)
b'01'
b'23'
b'45'
b'67'
b'89'
b'ab'

相關用法


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