首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数据库中挂载的.flow_from_directory桶上使用keras的s3 ()

在数据库中挂载的.flow_from_directory桶上使用keras的s3 ()
EN

Stack Overflow用户
提问于 2020-04-06 11:27:30
回答 2查看 1.3K关注 0票数 0

我正在使用Spark2.4.4和python中的Scala2.11后端在databricks中构建一个卷积神经网络。我已经建立了CNN之前,但这是我第一次使用星火(数据库)和AWS s3。AWS中的文件如下所示:

  • 火车试验小型/(火车或试验)/(0、1、2或3)/

然后列出每个目录中对应于其类别(0、1、2、3)的图像列表。

为了访问存储在s3桶中的文件,我将桶挂载到databricks中,如下所示:

代码语言:javascript
复制
# load in the image files
WS_BUCKET_NAME = "sensored_bucket_name/video_topic_modelling/data/train_test_small"
MOUNT_NAME = "train_test_small"
dbutils.fs.mount("s3a://%s" % AWS_BUCKET_NAME, "/mnt/%s" % MOUNT_NAME)
display(dbutils.fs.ls("/mnt/%s" % MOUNT_NAME))

在使用:display(dbutils.fs.mounts())时,我可以看到装载到以下位置的桶:

MountInfo(mountPoint='/mnt/train_test_small', source='sensored_bucket_name/video_topic_modelling/data/train_test_small', encryptionType='')

然后,我尝试使用以下代码通过keras的flow_from_directory()模块访问这个挂载目录:

代码语言:javascript
复制
# create extra partition of the training data as a validation set
train_datagen=ImageDataGenerator(preprocessing_function=preprocess_input, validation_split=0) #included in our dependencies

# set scaling to most common shapes
train_generator=train_datagen.flow_from_directory('/mnt/train_test_small',
                                                 target_size=(320, 240),
                                                 color_mode='rgb',
                                                 batch_size=96,
                                                 class_mode='categorical',
                                                 subset='training')
                                                 #shuffle=True)
validation_generator=train_datagen.flow_from_directory('/mnt/train_test_small',
                                                 target_size=(320, 240),
                                                 color_mode='rgb',
                                                 batch_size=96,
                                                 class_mode='categorical',
                                                 subset='validation')

然而,这给我带来了以下错误:

FileNotFoundError: [Errno 2] No such file or directory: '/mnt/train_test_small/train/'

我试着用keras和databricks文档来解决这个问题,但是没有得到进一步的进展。目前,我最好的猜测是,keras flow_from_directory()无法检测挂载的目录,但我不确定。

有谁知道如何将.flow_from_directory()模块应用于databricks中的s3挂载目录,或者谁知道一个好的替代方案?我会非常感谢你的帮助!

EN

回答 2

Stack Overflow用户

发布于 2020-04-06 12:47:48

我认为您可能丢失了flow_from_directory的另一个目录级别指示。来自Keras 文档

目录:string,指向目标目录的路径。它应该包含,每个类一个子目录。每个子目录目录树中的任何PNG、JPG、BMP、PPM或TIF图像都将包含在生成器中。

代码语言:javascript
复制
# set scaling to most common shapes
train_generator=train_datagen.flow_from_directory(
    '/mnt/train_test_small/train', # <== add "train" folder
    target_size=(320, 240),
    ...

validation_generator=train_datagen.flow_from_directory(
    '/mnt/train_test_small/test', # <== add "test" folder
    target_size=(320, 240),
    ....
票数 1
EN

Stack Overflow用户

发布于 2020-04-06 12:58:41

找到答案了。若要访问文件夹的直接路径,请添加/dbfs/mnt/train_test_small/train/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61058721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档