【发布时间】:2016-07-04 04:08:58
【问题描述】:
我正在尝试将 theano 与带有神经网络库 Keras 的 cpu-multiprocessing 一起使用。
我使用device=gpu 标志并加载 keras 模型。然后为了提取超过一百万张图像的特征,我使用了多处理池。
函数看起来像这样:
from keras import backend as K
f = K.function([model.layers[0].input, K.learning_phase()], [model.layers[-3].output,])
def feature_gen(flz):
im = imread(flz)
cPickle.dump(f([im, 0])[0][0], open(flz, 'wb'), -1)
pool = mp.Pool(processes=10)
results = [pool.apply_async(feature_gen, args=(f, )) for f in filelist]]
然而,这开始在 GPU 内存中创建池,我的代码因内存错误而失败。是否可以强制多处理在 CPU 内存中创建线程,然后使用特定部分进行特征提取,例如带有 GPU 的f([im, 0])[0][0]?
如果没有,是否有替代方法可以在 python 中并行执行相同的操作?
【问题讨论】:
标签: python multithreading multiprocessing theano keras