在 google 云机器学习中读取文件

reading files in google cloud machine learning

我尝试 运行 tensorflow-wavenet 在 google 云 ml-engine 上使用 gcloud ml-engine jobs submit training 但是云作业在尝试读取 json配置文件:

with open(args.wavenet_params, 'r') as f:
   wavenet_params = json.load(f)

arg.wavenet_params 只是我上传到 google 云存储桶的 json 文件的文件路径。文件路径如下所示:gs://BUCKET_NAME/FILE_PATH.json

我仔细检查了文件路径是否正确,我确信这部分是导致崩溃的原因,因为我注释掉了其他所有内容。

崩溃日志文件没有提供太多关于发生的事情的信息:

Module raised an exception for failing to call a subprocess Command '['python', '-m', u'gcwavenet.train', u'--data_dir', u'gs://wavenet-test-data/VCTK-Corpus-Small/', u'--logdir_root', u'gs://wavenet-test-data//gcwavenet10/logs']' returned non-zero exit status 1.

我用 f.close() 替换了 wavenet_params = json.load(f),我仍然得到相同的结果。

当我 运行 在本地使用 gcloud ml-engine local train 时一切正常。

我认为问题通常出在使用 gcloud ml-engine 读取文件,或者我无法从 python 文件中使用 [=20= 访问 google 云存储桶].

Python 的 open 函数无法从 GCS 读取文件。您将需要使用能够这样做的库。 TensorFlow 包含一个这样的库:

import tensorflow as tf
from tensorflow.python.lib.io import file_io

with file_io.FileIO(args.wavenet_params, 'r') as f:
  wavenet_params = json.load(f)