从多个Jupiter笔记本访问内存数据

时间:2019-05-07 02:54:02

标签: tensorflow memory deep-learning gpu cpu

我有多个GPU,可以并行训练不同的神经网络,但是不幸的是,由于CPU内存限制了我的数据量,因此无法在不同的笔记本上运行多个模型,因为我必须加载在每个笔记本的数据中。

是否可以从一个笔记本加载数据并通过另一个笔记本访问数据?

我正在使用TensorFlow / Keras

1 个答案:

答案 0 :(得分:1)

使用生成器函数,而不是尝试将所有内容加载到内存中。这会将数据分批读取到内存中,然后将这些批数据通过神经网络推送。 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。