【问题标题】:Why use tensorflow gfile? (for file I/O)为什么使用 tensorflow gfile? (用于文件 I/O)
【发布时间】:2017-03-21 09:26:09
【问题描述】:

Tensorflow 代码使用不同于 python 内置方法的文件 I/O 方法。 根据source code,它是有用的

“没有线程锁定的文件 I/O 包装器”

我不确定它在什么场合有用,什么时候不应该使用。

有什么想法吗?

谢谢

【问题讨论】:

    标签: python multithreading tensorflow thread-safety


    【解决方案1】:

    这条评论:

    没有线程锁定的文件 I/O 包装器

    ...是对 TensorFlow 的 tf.gfile 模块的一个特别无用的描述!

    tf.gfile模块的主要作用是:

    1. 为了提供一个接近 Python 的 file 对象的 API,
    2. 提供基于 TensorFlow 的C++ FileSystem API 的实现。

    C++ FileSystem API 支持多种文件系统实现,包括本地文件、Google 云存储(使用 gs:// 前缀)和 HDFS(使用 hdfs:// 前缀)。 TensorFlow 将这些导出为 tf.gfile,以便您可以使用这些实现来保存和加载检查点、编写 TensorBoard 日志和访问训练数据(以及其他用途)。但是,如果您的所有文件都是本地文件,则可以毫无问题地使用常规 Python 文件 API。

    【讨论】:

    • 如果我的所有文件都是本地文件,我会通过使用tf.gfile获得任何计算优势吗?
    • 不,可能不会。
    • @martianwars 但是你可能也不会有任何明显的性能下降。据我了解,关键是您可以将单个 API 作为几个不同持久存储系统的抽象,因此如果有一天您想保存到 HDFS,这只是一个参数更改。因为它非常方便,所以即使我使用 TensorFlow 构建模型/NN,我实际上也会使用这个 API。
    • 如果 gfile 是一个单独的 Python 包 s.t. 那就太好了。我们可以在不需要 Tensorflow 其余部分的地方使用它。
    • 同意@StefanFalk。我有一些简单的容器作为我的 ML 管道的一部分,它们只是在 GCP 存储桶中移动东西。我为此使用 gfile 模块,因为它非常方便,但是添加整个 tensorflow 会使这些容器大量膨胀
    猜你喜欢
    • 1970-01-01
    • 2021-03-06
    • 2015-01-17
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 2021-05-24
    相关资源
    最近更新 更多