【问题标题】:Access in-memory data from multiple Jupiter notebooks从多个 Jupyter 笔记本访问内存中的数据
【发布时间】:2019-09-24 15:53:18
【问题描述】:

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

有没有办法从一个笔记本加载数据并通过另一个笔记本访问?

我正在使用 TensorFlow/Keras

【问题讨论】:

  • 您使用的是什么类型的数据?表格?图片?文本? “大”有多大?
  • 我正在处理图像。大意味着多 GB。

标签: tensorflow memory deep-learning gpu cpu


【解决方案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 的版本。

【讨论】:

    猜你喜欢
    • 2018-02-26
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多