当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。