我想用cano-multiprocessing与神经网络库Keras使用theano。使用multianocessing与theano
我使用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中并行执行相同的操作?