我正在使用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]
.这将对您有所帮助。