【发布时间】:2018-01-09 17:59:56
【问题描述】:
我需要训练一个由存储在 GCloud Storage 上的原始图像提供的神经网络。为此,我使用我的 Keras 图像生成器的 flow_from_directory 方法来查找存储中的所有图像及其相关标签。
training_data_directory = args.train_dir
testing_data_directory = args.eval_dir
training_gen = datagenerator.flow_from_directory(
training_data_directory,
target_size = (img_width, img_height),
batch_size = 32)
validation_gen = basic_datagen.flow_from_directory(
testing_data_directory,
target_size = (img_width, img_height),
batch_size = 32)
我的 GCloud Storage 架构如下:
布拉德桶/数据/火车
布拉德桶/数据/评估
gsutil 命令允许我确定我的文件夹存在。
brad$ gsutil ls gs://brad-bucket/data/
gs://brad-bucket/data/eval/
gs://brad-bucket/data/train/
这是我正在运行的脚本,用于在 ML Engine 上启动训练,其中包含我用于目录路径的字符串(train_dir、eval_dir)。
BUCKET="gs://brad-bucket"
JOB_ID="training_"$(date +%s)
JOB_DIR="gs://brad-bucket/jobs/train_keras_"$(date +%s)
TRAIN_DIR="gs://brad-bucket/data/train/"
EVAL_DIR="gs://brad-bucket/data/eval/"
CONFIG_PATH="config/config.yaml"
PACKAGE="trainer"
gcloud ml-engine jobs submit training $JOB_ID \
--stream-logs \
--verbosity debug \
--module-name trainer.task \
--staging-bucket $BUCKET \
--package-path $PACKAGE \
--config $CONFIG_PATH \
--region europe-west1 \
-- \
--job_dir $JOB_DIR \
--train_dir $TRAIN_DIR \
--eval_dir $EVAL_DIR \
--dropout_one 0.2 \
--dropout_two 0.2
不过,我正在做的事情会引发 OSError。
ERROR 2018-01-10 09:41:47 +0100 service File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/keras/_impl/keras/preprocessing/image.py", line 1086, in __init__
ERROR 2018-01-10 09:41:47 +0100 service for subdir in sorted(os.listdir(directory)):
ERROR 2018-01-10 09:41:47 +0100 service OSError: [Errno 2] No such file or directory: 'gs://brad-bucket/data/train/'
当我使用另一种数据结构(以另一种方式读取数据)时,一切正常,但是当我使用 flow_from_directory 从目录中读取时和子目录我总是遇到同样的错误。 是否可以使用此方法从 Cloud Storage 检索数据,还是必须以其他方式提供数据?
【问题讨论】:
-
嘿,如果您输入或包含作为文本的错误和包含的代码 sn-p 会更好。此外,如果您可以包含
training_data_directory的内容(以及测试)将有助于调试。
标签: tensorflow neural-network keras gcloud