【问题标题】:Does Google Cloud ML Engine trainer have to be explicitly aware of Google Cloud Storage URIs?Google Cloud ML Engine 培训师是否必须明确了解 Google Cloud Storage URI?
【发布时间】:2017-12-25 17:02:03
【问题描述】:

我正在尝试将一个现有的 TensorFlow 模型与 Google Cloud ML Engine 一起使用,该模型目前已在本地运行。

模型目前通过将my_model.trainmy_model.eval 等文件名传递给tf.data.TextLineDataset 来获取其训练数据。这些文件名现在在模型的训练器中进行了硬编码,但我计划对其进行重构,以便在命令行上将它们获取为training application parameters(以及--job-dir);例如像这样:

my_trainer.pl --job-dir job \
  --filename-train my_model.train --filename-eval my_model.eval

这也应该允许我在本地使用 Cloud ML Engine 运行训练器:

gcloud ml-engine local train \
  --job-dir job
  ...
  -- \
  --filename-train my_model.train \
  --filename-eval my_model.eval

到目前为止,我是否做出了正确的假设,我是否还可以通过将本地文件名替换为 Google Cloud Storage gs: URI,例如在 Google 的云中运行相同的训练器(在将我的数据集文件上传到 my_bucket 之后)像这样:

gcloud ml-engine local train \
  --job-dir job
  ...
  -- \
  --filename-train gs://my_bucket/my_model.train \
  --filename-eval gs://my_bucket/my_model.eval

在其他世界,tf.data.TextLineDataset 可以将gs: URI 透明地处理为“文件名”,还是我必须在我的训练器中包含特殊代码才能预先处理此类 URI?

【问题讨论】:

    标签: tensorflow google-cloud-ml


    【解决方案1】:

    是的,tf.read_file 和 tf.TextLineReader 和 tf.data.TextLineDataset 都隐式处理 GCS。只需确保将 gs://my_bucket/path/to/data.csv 的 GCS URL 作为“文件名”传入即可

    需要注意的一点是:始终使用 os.path.join() 来组合“目录”名称和“文件”名称。虽然大多数 Linux 发行版通过忽略重复的斜杠来处理像 /some/path//somefile.txt 这样的路径,但 GCS(作为键值存储)认为它与 /some/path/somefile.txt 不同。因此,请使用 os.path.join 确保您没有重复目录分隔符。

    【讨论】:

    • 谢谢。自我注意:Thisthis 上的 tensorflow.python.lib.io.file_io 是相关的。
    猜你喜欢
    • 2018-01-18
    • 1970-01-01
    • 2018-01-06
    • 2019-08-02
    • 1970-01-01
    • 2018-04-29
    • 2017-07-25
    • 2017-09-05
    • 1970-01-01
    相关资源
    最近更新 更多