gpt4 book ai didi

tensorflow - Tensorflow 中的自定义数据读取器 (LMDB)

转载 作者:行者123 更新时间:2023-12-02 03:11:56 25 4
gpt4 key购买 nike

一般来说,在TF中读取自定义数据我能想到的三种方式:

  1. native 实现/自定义数据读取器 https://www.tensorflow.org/versions/r0.10/how_tos/new_data_formats/index.html
  2. Python 函数包装 https://www.tensorflow.org/versions/r0.9/api_docs/python/script_ops.html
  3. 占位符我已经成功实现了这一点。但我想要像 (1) 或 (2) 这样的图内解决方案。

有人可以详细说明 (1) 和 (2) 之间的优缺点(主要是从性能/效率的角度来看),以便我可以使用队列运行器。

我的感觉是 (1) 应该是最有效和稳健的方式。但是除非我共享或 PR 代码并且其他用户必须编译,否则该解决方案将不可移植。而 (2) 和 (3) 是可移植的,对吧?

我还打开了一个功能请求' LMDB Reading Feature ' GitHub 上被误解并作为问题关闭的问题。

更新

TensorFlow 没有本地阅读器:https://github.com/tensorflow/tensorflow/pull/9950

最佳答案

(2)(3) 都受制于 Python 的 GIL;最终你可能会被锁起来。因此,这个实现也较慢,因为它不是在图中,并且很难正确并行化。它既快速又简单,但也不是最理想的。所以,为了 1 成为专业人士;

我还发现 (1) 有两个解决方案:

(1A) 在源代码中实现自定义操作。

如果您希望您的 Op 在质量允许的情况下在某个时候最终出现在 Tensorflow 源代码中,这就是方法。

(1B) 实现独立的自定义操作。

事实证明,这非常简单且便携。您可以只编译自己的 .cc 代码,并通过 Python 注册它。无需重建源代码:https://www.tensorflow.org/extend/adding_an_op

关于tensorflow - Tensorflow 中的自定义数据读取器 (LMDB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39525951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com