tensorflow - 将 tf.dataset 写回 TFRecord

标签 tensorflow tensorflow-datasets tensorflow2.0

创建 tf.data.Dataset 后,我​​想将其写入 TFRecords。

一种方法是遍历整个数据集并在 serializeToString 之后写入 TFRecords。但这并不是最有效的方法。

有没有更简单的方法来做到这一点?
TF2.0 中是否有可用的 API?

最佳答案

您可以使用 TensorFlow Datasets (tfds) :这个库不仅是一个随时可用的集合tf.data.Dataset对象,但它也是将原始数据转换为 TFRecords 的工具链。

关注 official guide添加新数据集很简单。简而言之,您只需要实现方法 _info_generate_examples .

特别是_generate_examples是 tfds 用来在 TFRecords 中创建行的方法。_generate_examples的每一个元素yields 是一本字典;每个字典都是 TFRecord 文件中的一行。

例如(保留在官方文档中)generate_examples下面是 tfds 用来保存 TFRecords 的,每一个都有记录“image_description”,“image”,“label”。

def _generate_examples(self, images_dir_path, labels):
  # Read the input data out of the source files
  for image_file in tf.io.gfile.listdir(images_dir_path):
    ...
  with tf.io.gfile.GFile(labels) as f:
    ...

  # And yield examples as feature dictionaries
  for image_id, description, label in data:
    yield image_id, {
        "image_description": description,
        "image": "%s/%s.jpeg" % (images_dir_path, image_id),
        "label": label,
    }

在您的情况下,您可以使用 tf.data.Dataset对象,并循环遍历它(在 generate_examples 方法中),并产生 TFRecord 的行。

这样,tfds 会为您处理序列化,您会在 ~/tensorflow_datasets 中找到。为您的数据集创建的 TFRecord 文件夹。

关于tensorflow - 将 tf.dataset 写回 TFRecord,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57453826/

相关文章:

tensorflow - 无法使用 RectifiedAdam 优化器加载 Keras 模型

tensorflow2.0 - 如何加载 Tensorflow 2.0 的 tfrecords 文件?

python - 用于动态输入形状的 Tensorflow C++ API

tensorflow - 如何为 tensorflow 服务准备预热请求文件?

python - 使用 Tensorflow 进行文本输入

tensorflow - 如何使张量具有四维?

python - 从 Tensorflow 中删除变量

tensorflow - 如果测试时在训练模式下使用批量归一化怎么办?

python - 从 HDFS、TFRecordDataset+num_parallel_read 等远程主机读取时哪个更好?或 parallel_interleave

tensorflow - 在 Tensorflow 中通过数据集 API 处理批处理时,在字典中执行索引查找的推荐方法是什么?