我有多个GPU,可以并行训练不同的神经网络,但是不幸的是,由于CPU内存限制了我的数据量,因此无法在不同的笔记本上运行多个模型,因为我必须加载在每个笔记本的数据中。
是否可以从一个笔记本加载数据并通过另一个笔记本访问数据?
我正在使用TensorFlow / Keras
答案 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。