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


Python tf.data.Dataset用法及代码示例


表示一组可能很大的元素。

用法

tf.data.Dataset(
    variant_tensor
)

参数

  • variant_tensor 表示数据集的 DT_VARIANT 张量。

属性

  • element_spec 此数据集元素的类型规范。
    dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3])
    dataset.element_spec
    TensorSpec(shape=(), dtype=tf.int32, name=None)

    如需更多信息,请阅读本指南。

tf.data.Dataset API 支持编写说明性和高效的输入管道。 Dataset 的使用遵循一个常见的模式:

  1. 从输入数据创建源数据集。
  2. 应用数据集转换来预处理数据。
  3. 迭代数据集并处理元素。

迭代以流式方式发生,因此整个数据集不需要放入内存中。

源数据集:

创建数据集的最简单方法是从 python list 创建它:

dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3])
for element in dataset:
  print(element)
tf.Tensor(1, shape=(), dtype=int32)
tf.Tensor(2, shape=(), dtype=int32)
tf.Tensor(3, shape=(), dtype=int32)

要处理文件中的行,请使用 tf.data.TextLineDataset

dataset = tf.data.TextLineDataset(["file1.txt", "file2.txt"])

要处理以 TFRecord 格式编写的记录,请使用 TFRecordDataset

dataset = tf.data.TFRecordDataset(["file1.tfrecords", "file2.tfrecords"])

要创建与模式匹配的所有文件的数据集,请使用 tf.data.Dataset.list_files

dataset = tf.data.Dataset.list_files("/path/*.txt")

有关创建数据集的更多方法,请参阅tf.data.FixedLengthRecordDatasettf.data.Dataset.from_generator

转换:

拥有数据集后,您可以应用转换为模型准备数据:

dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3])
dataset = dataset.map(lambda x:x*2)
list(dataset.as_numpy_iterator())
[2, 4, 6]

常用术语:

元素:调用的单个输出next()在数据集迭代器上。元素可以是包含多个组件的嵌套结构。例如,元素(1, (3, "apple"))有一个元组嵌套在另一个元组中。组件是1,3, 和"apple".

组件:元素嵌套结构中的叶子。

支持的类型:

元素可以是元组、命名元组和字典的嵌套结构。请注意,Python 列表不被视为组件的嵌套结构。相反,列表被转换为张量并被视为组件。例如,元素(1, [1, 2, 3]) 只有两个组件;张量 1 和张量 [1, 2, 3] 。元素组件可以是 tf.TypeSpec 可以表示的任何类型,包括 tf.Tensortf.data.Datasettf.sparse.SparseTensortf.RaggedTensortf.TensorArray

a = 1 # Integer element
b = 2.0 # Float element
c = (1, 2) # Tuple element with 2 components
d = {"a":(2, 2), "b":3} # Dict element with 3 components
Point = collections.namedtuple("Point", ["x", "y"])
e = Point(1, 2) # Named tuple
f = tf.data.Dataset.range(10) # Dataset element

如需更多信息,请阅读本指南。

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.data.Dataset。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。