在深度神经网络训练的背景下,当使用GPU作为处理单元时,训练工作得更快 . 这是通过配置CudNN优化并使用以下行更改环境变量中的处理单元(Windows上的Python 2.7和Keras)来完成的:
os.environ["THEANO_FLAGS"] = "floatX=float32,device=gpu,optimizer_including=cudnn,gpuarray.preallocate=0.8,dnn.conv.algo_bwd_filter=deterministic,dnn.conv.algo_bwd_data=deterministic,dnn.include_path=e:/toolkits.win/cuda-8.0.61/include,dnn.library_path=e:/toolkits.win/cuda-8.0.61/lib/x64"
输出是:
Using gpu device 0: TITAN Xp (CNMeM is disabled, cuDNN 5110)
问题是GPU内存与RAM(分别为12GB和128GB)相比有限,而且训练只是整个流程的一个阶段 . 因此,我希望在培训完成后再切换回CPU . 我尝试过以下行,但它没有效果:
os.environ["THEANO_FLAGS"] = "floatX=float32,device=cpu"
我的问题是:
-
是否可以在运行时从GPU更改为CPU,反之亦然? (技术上)
-
如果是,我怎样才能在Python中以编程方式进行? (2.7,Windows和Keras与Theano后端) .
1 回答
是的,这至少对于tensorflow后端是可能的 . 您只需要导入tensorflow并将您的代码放入以下
with
:我不确定这是否也适用于theano后端 . 但是,从一个后端切换到另一个后端只是预先设置一个标志,所以这不应该提供太多麻烦 .