apache-spark - 在 databricks 中安装的 s3 存储桶上使用 keras 的 .flow_from_directory()
问题描述
我正在尝试使用 Spark 2.4.4 和 Python 中的 Scala 2.11 后端在数据块中构建卷积神经网络。我以前构建过 CNN,但这是我第一次使用 Spark(databricks)和 AWS s3。AWS 中的文件是这样排序的:
- train_test_small/(训练或测试)/(0,1,2或3)/
然后是每个目录中与其类别相对应的图像列表(0,1,2,3)
为了访问存储在 s3 存储桶中的文件,我将存储桶安装到数据块上,如下所示:
# 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() 模块访问这个挂载的目录:
# 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 挂载目录上,或者谁知道一个好的替代方案?帮助将不胜感激!
解决方案
我认为您可能缺少对 flow_from_directory 的另一个目录级别指示。来自 Keras文档:
directory:字符串,目标目录的路径。每个类应该包含一个子目录。每个子目录目录树内的任何 PNG、JPG、BMP、PPM 或 TIF 图像都将包含在生成器中。
# 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),
....
推荐阅读
- c - C Graphics - 如何以特定角度移动对象
- material-ui - Material UI Tooltip 标题文字内容有一个打开对话框的按钮,打开后对话框消失
- github - Github Actions 中的 repository_dispatch 和 workflow_dispatch 有什么区别?
- discord - 随机提示。不和谐.py
- html - 使用 CSS 和 HTML 在冒号后添加空格
- apache-spark-sql - 无法通过从下拉选择转换的选定字段代码使用 SQL 访问全局视图表
- javascript - 如何检查网页是否可以在 iframe 中加载
- javascript - 我如何重新渲染我的 vue 组件(模态)
- python - JSON格式不对
- java - 如何在 jpql 和 hql 中使用 MySQL 日期函数