在深度神经网络训练的背景下,当使用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"
我的问题是:
答案 0 :(得分:2)
是的,这至少对于tensorflow后端是可能的。您还必须导入tensorflow并将代码放入以下with
:
with tf.device('/cpu:0'):
your code
with tf.device('/gpu:0'):
your code
我不确定这是否也适用于theano后端。但是,从一个后端切换到另一个后端只是预先设置一个标志,所以这不应该提供太多麻烦。