在谷歌云上训练神经网络时出现"Unable to get Filesystem for path"错误



我正在使用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

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

gsutil cp -r data gs://$BUCKET_NAME

然后,我验证了这两个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

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

# 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

可悲的是,这运行了一段时间,然后崩溃输出以下错误:

ValueError: Unable to get the Filesystem for path gs://polar-terminal-160506-mlengine/data/eval_set.csv

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

编辑:

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

read_input_source = beam.io.ReadFromText(
opt.input_path, strip_trailing_newlines=True)

这似乎是一个很好的线索,但我仍然不确定发生了什么。当我谷歌"beam.io.ReadFromText ValueError:无法获取路径的文件系统"时,根本没有出现任何相关的内容,这有点奇怪。思潮?

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

试试pip install apache-beam[gcp]

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

Apache Beam 包可在此处获得

正如Jean-Christophe所描述的,我相信你的安装是不完整的。

apache-beam包不包括从 GCP 读取/写入的所有内容。要获得所有这些,以及能够将管道部署到 CloudDataflow(DataRunner)的运行程序,您需要通过pip安装它。

pip install google-cloud-dataflow

这就是我能够解决相同问题的方式。

试试pip install apache_beam[gcp].这将对您有所帮助。

相关内容

最新更新