Доступ к данным в памяти из нескольких ноутбуков Jupiter - PullRequest
0 голосов
/ 07 мая 2019

У меня есть несколько графических процессоров для параллельного обучения различных нейронных сетей, но, к сожалению, из-за большого объема данных я ограничен памятью ЦП и не могу запускать несколько моделей на разных ноутбуках, потому что мне придется загружатьв данных для каждой записной книжки.

Есть ли способ загрузить данные из одной записной книжки и получить к ним доступ через другую?

Я использую TensorFlow / Keras

1 Ответ

1 голос
/ 07 мая 2019

Вместо того, чтобы пытаться загрузить все в память, используйте функцию генератора.Это будет считывать данные в память пакетами, а затем проталкивать эти пакеты через нейронную сеть.Keras имеет встроенные функции генератора, предназначенные именно для чтения пакетов данных изображения с диска.

См. https://keras.io/preprocessing/image/

Вот небольшой пример сценария:

from keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(
        rescale=1./255,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True)

test_datagen = ImageDataGenerator(rescale=1./255)

train_generator = train_datagen.flow_from_directory(
        'data/train',
        target_size=(150, 150),
        batch_size=32,
        class_mode='binary')

validation_generator = test_datagen.flow_from_directory(
        'data/validation',
        target_size=(150, 150),
        batch_size=32,
        class_mode='binary')

model.fit_generator(
        train_generator,
        steps_per_epoch=2000,
        epochs=50,
        validation_data=validation_generator,
        validation_steps=800)

Вышеприведенное предполагает, что вы делаете двоичную классификацию (установленную в "class_mode"), но вы также можете делать "категориальные", "разреженные", "вводные данные" и т. Д. Если вам нужно что-то еще, вы также можете создать свою собственнуюгенератор, или адаптировать Keras один.

...