использование keras .flow_from_directory () на смонтированной корзине s3 в блоках данных - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь построить сверточную нейронную сеть в блоках данных, используя Spark 2.4.4 и серверную часть Scala 2.11 в python. Я собирал CNN раньше, но я впервые использую Spark (блоки данных) и 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='')

Затем я пытаюсь получить доступ к этому смонтированному каталогу через модуль потока ke_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 () к смонтированному каталогу s3 в кирпичах данных, или кто знает хорошую альтернативу? Помощь будет высоко ценится!

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Я думаю, что вы можете пропустить еще одно указание уровня каталога в директории 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),
    ....
0 голосов
/ 06 апреля 2020

Ответ найден. Для доступа к прямому пути к папке добавьте / dbfs / mnt / train_test_small / train /

...