在Google云上训练神经网络时"无法获取文件系统路径"错误

som*_*ode 8 python csv terminal google-app-engine google-cloud-platform

我正在使用Google Cloud在云上训练神经网络,如下例所示:

https://cloud.google.com/blog/big-data/2016/12/how-to-classify-images-with-tensorflow-using-google-cloud-machine-learning-and-cloud-dataflow

首先,我将以下内容设置为环境变量:

PROJECT_ID=$(gcloud config list project --format "value(core.project)")
BUCKET_NAME=${PROJECT_ID}-mlengine
Run Code Online (Sandbox Code Playgroud)

然后,我使用以下命令将我的培训和评估数据(名称为eval_set.csv和train_set.csv的csv)上传到Google云存储:

gsutil cp -r data gs://$BUCKET_NAME
Run Code Online (Sandbox Code Playgroud)

然后我验证了这两个csv文件位于我的Google Cloud存储的polar-terminal-160506-mlengine/data目录中.

然后,我做了以下环境变量分配

# Assign appropriate values.
PROJECT=$(gcloud config list project --format "value(core.project)")
JOB_ID="flowers_${USER}_$(date +%Y%m%d_%H%M%S)"
GCS_PATH="${BUCKET}/${USER}/${JOB_ID}"
DICT_FILE=gs://cloud-ml-data/img/flower_photos/dict.txt
Run Code Online (Sandbox Code Playgroud)

在尝试预处理我的评估数据之前:

# Preprocess the eval set.
python trainer/preprocess.py \
  --input_dict "$DICT_FILE" \
  --input_path "gs://cloud-ml-data/img/flower_photos/eval_set.csv" \
  --output_path "${GCS_PATH}/preproc/eval" \
  --cloud
Run Code Online (Sandbox Code Playgroud)

遗憾的是,这会运行一段时间然后崩溃输出以下错误:

ValueError: Unable to get the Filesystem for path gs://polar-terminal-160506-mlengine/data/eval_set.csv
Run Code Online (Sandbox Code Playgroud)

这似乎不可能,因为我通过我的Google云端存储控制台确认eval_set.csv存储在此位置.这可能是权限问题还是我没有看到的问题?

编辑:

我发现此运行时错误的原因来自trainer.preprocess.py文件中的某一行.这一行是这样的:

read_input_source = beam.io.ReadFromText(
      opt.input_path, strip_trailing_newlines=True)
Run Code Online (Sandbox Code Playgroud)

似乎是一个非常好的线索,但我仍然不确定发生了什么.当我google"beam.io.ReadFromText ValueError:无法获取路径的文件系统"时,根本没有任何相关性,这有点奇怪.思考?

Jea*_*gue 10

看起来您的apache-beam库安装可能不完整.

尝试 pip install apache-beam[gcp]

它允许apache beam访问存储在Google Cloud Storage上的文件.

Apache Beam包可在此处获得