并行化 tf.data.Dataset.from_generator

2023-12-20

我有一个不平凡的输入管道from_generator非常适合...

dataset = tf.data.Dataset.from_generator(complex_img_label_generator,
                                        (tf.int32, tf.string))
dataset = dataset.batch(64)
iter = dataset.make_one_shot_iterator()
imgs, labels = iter.get_next()

Where complex_img_label_generator动态生成图像并返回一个代表图像的 numpy 数组(H, W, 3)图像和一个简单的string标签。我不能将处理表示为从文件中读取并且tf.image运营。

我的问题是如何并行化生成器?我如何让 N 个这些生成器在它们自己的线程中运行。

一种想法是使用dataset.map with num_parallel_calls处理线程;但地图是在张量上运行的...另一个想法是创建多个生成器,每个生成器都有自己的prefetch并以某种方式加入它们,但我不知道如何加入 N 个生成器流?

我可以遵循任何典型的例子吗?


原来我可以使用Dataset.map如果我使生成器超轻量级(仅生成元数据),然后将实际的重型照明移至无状态函数中。这样我就可以将繁重的部分与.map用一个py_func.

作品;但感觉有点笨拙...如果能够添加就太好了num_parallel_calls to from_generator :)

def pure_numpy_and_pil_complex_calculation(metadata, label):
  # some complex pil and numpy work nothing to do with tf
  ...

dataset = tf.data.Dataset.from_generator(lightweight_generator,
                                         output_types=(tf.string,   # metadata
                                                       tf.string))  # label

def wrapped_complex_calulation(metadata, label):
  return tf.py_func(func = pure_numpy_and_pil_complex_calculation,
                    inp = (metadata, label),
                    Tout = (tf.uint8,    # (H,W,3) img
                            tf.string))  # label
dataset = dataset.map(wrapped_complex_calulation,
                      num_parallel_calls=8)

dataset = dataset.batch(64)
iter = dataset.make_one_shot_iterator()
imgs, labels = iter.get_next()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

并行化 tf.data.Dataset.from_generator 的相关文章

随机推荐

  • 如何使用 Teams JS SDK v2 向 Microsoft Teams 中的用户或频道发送大文本消息?

    我目前正在使用 Microsoft Teams JavaScript SDK v2 TeamsJS 开发一个应用程序 并且正在努力寻找一种向特定用户或频道发送大文本消息的方法 我已成功使用 selectPeople API 使用户能够从列表
  • 什么是 Cache-Control: private?

    当我访问时chesseng herokuapp com http chesseng herokuapp com我得到一个响应标头 如下所示 Cache Control private Connection keep alive Conten
  • 如何在docker中运行无头浏览器?

    我正在使用无头浏览器构建一个爬虫 但现在我想对我的应用程序进行 dockerize 我已经在我的 docker 映像中安装了 chrome 但在运行脚本时它会抛出错误 启动Chrome js const chromeLauncher req
  • @Transactional 与 JPA 和 Hibernate 有什么用?

    我正在学习如何使用 JPA 和 Hibernate 以及 MySQL 数据库创建 REST API 并且我看到了这个 Transactional 注释 有人能解释一下这个注释有什么用吗 例如我有这个简单的 DAO 类 Repository
  • 将 csv 导入到 xlsx python

    我正在尝试将 csv 文件中的一些数据放入现有的 Excel 文件中 我现有的 Excel 文件包含图像 而 xlrd 无法获取图像 我尝试使用 xlsxwriter 但它无法附加到现有的 xslx 我找到的唯一解决方案是使用 openpy
  • AppDelegate 文件适合 MVC 中的什么位置?

    我正在学习 iPhone iPad 编程 我相信我理解了MVC的概念 我遇到的困难是理解普通 iPhone iPad 应用程序中的某些文件如何适合 MVC 当您使用 基于视图的应用程序 模板创建新应用程序时 将创建 AppDelegate
  • Python pandas - 如果该项目在列表中,则新列的值

    我想在 pandas 数据框中创建一个新列 第一列包含国家 地区名称 该列表包含我感兴趣的国家 例如欧盟 新列应指示数据框中的国家 地区是否在列表中 以下是代码的简化版本 import pandas as pd import numpy a
  • 如何求一系列数字的最小公倍数?

    给定一个由两个数字组成的数组 让它们定义一系列数字的开始和结束 例如 2 6 表示范围 2 3 4 5 6 我想编写 javascript 代码来查找范围的最小公倍数 我下面的代码仅适用于小范围 而不是类似的 1 13 即范围 1 2 3
  • SSH 握手抱怨缺少主机密钥

    我正在尝试连接到远程主机并检查文件是否存在 在这个阶段 我只是尝试连接 但出现错误 2017 08 01 18 16 39 unable to connect ssh handshake failed ssh required host k
  • 如何并行化 Azure ML 服务计算集群上的工作?

    我可以使用计算集群将作业提交到 Azure ML 服务 它运行良好 并且自动缩放与自定义环境的良好灵活性相结合似乎正是我所需要的 然而 到目前为止 所有这些作业似乎只使用集群的一个计算节点 理想情况下 我希望使用多个节点进行计算 但我看到的
  • 当我在 android 中使用哈希映射时显示警告(使用新的 SparseArray

    我是 Android 开发新手 在我使用的 Android 应用程序中HashMap 但我收到警告 Use new SparseArray
  • URL 中的段落字符?

    我刚刚遇到了这个Google 应用引擎文章 http code google com googleapps appsscript articles appengine html在某些 URL 中使用有趣的反向 P 字符 查看第一个代码框顶部
  • 使用 FastObjImporter 在场景中加载并显示 obj 模型

    在我的 Unity 项目中 我想使用在互联网上找到的 FastObjImporter 类将 obj 放入场景中 我是否必须创建一个空的 GameObject 并将已处理的 obj 分配给它 尝试使用空的游戏对象 GameObject go
  • 如何使用 Flutter 在 Android 和 iOS 上实现振动?

    我正在尝试使用 Flutter 在单击按钮时实现振动 我发现说实话非常困难 我尝试使用以下软件包但未成功 振动 https pub dev packages vibration and vibrate https pub dev packa
  • 无法使用 Jekyll 生成任何内容

    当我运行 Jekyll 时 它不会生成任何内容 我看到的输出 Configuration from home mbsheikh techtraits techtraits blog config yml Auto regenerating
  • 调用纯虚函数[重复]

    这个问题在这里已经有答案了 可能的重复 在构造函数中调用虚函数 https stackoverflow com questions 962132 calling virtual functions inside constructors 看
  • JAXB 是否存在内存利用率问题?

    我使用 JAXB 进行 xml 解析 是否存在任何性能或内存利用率问题 需要注意的一件事是JAXBContext newInstance 是一个非常慢的操作 这是发生大量反射和类生成的地方 导致 duffymo 提到的烫发空间问题 值得庆幸
  • 如果我仅使用 JSON.Net,我可以安全地删除 C# 模型类中指定后缀的字段和属性吗

    我有一个 C 应用程序 我有一个从 xsd 生成的类 该类如下所示 public class Transaction public bool amountSpecified get set public double amount get
  • Ocaml 中查找树深度的尾递归函数

    我有一个类型tree定义如下 type a tree Leaf of a Node of a a tree a tree 我有一个函数可以找到树的深度 如下所示 let rec depth function Leaf x gt 0 Node
  • 并行化 tf.data.Dataset.from_generator

    我有一个不平凡的输入管道from generator非常适合 dataset tf data Dataset from generator complex img label generator tf int32 tf string dat