我正在尝试使用现有的TensorFlow模型,而我到目前为止使用Google Cloud ML ML引擎在本地运行。
该模型当前通过将诸如my_model.train
和my_model.eval
等文件名中的培训数据传输到tf.data.TextLineDataset
中。这些文件名现在已在模型的培训师中进行了硬编码,但是我计划重构它,以便它以培训应用程序参数(以及--job-dir
)在命令行上获得。例如喜欢:
my_trainer.pl --job-dir job
--filename-train my_model.train --filename-eval my_model.eval
这也应该让我在本地使用Clould ML引擎运行教练:
gcloud ml-engine local train
--job-dir job
...
--
--filename-train my_model.train
--filename-eval my_model.eval
我到目前为止做了正确的假设,我还可以通过用Google Cloud Storage gs:
URIS替换本地文件名来在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
i其他世界, tf.data.TextLineDataset
可以透明地处理 gs:
uris,还是我必须在教练中包括特殊代码以事先处理此类uris?
是的,tf.read_file和tf.tf.textlinereader和tf.data.textlinedataset隐含地处理GCS。只需确保您将GCS URL传递给GS://my_bucket/path/to/data.csv作为"文件名"
要小心的一件事:始终使用OS.Path.join()组合"目录"名称和"文件"名称。尽管大多数Linux发行版都通过忽略重复的斜杠(是键值商店)来处理诸如/some/path/somefile.txt之类的路径。因此,使用OS.Path.join确保您不重复目录分离器。