一个相当独立的方法是使用import tensorflow as tf
from keras import backend as K
num_cores = 4
if GPU:
num_GPU = 1
num_CPU = 1
if CPU:
num_CPU = 1
num_GPU = 0
config = tf.ConfigProto(intra_op_parallelism_threads=num_cores,
inter_op_parallelism_threads=num_cores,
allow_soft_placement=True,
device_count = {'CPU' : num_CPU,
'GPU' : num_GPU}
)
session = tf.Session(config=config)
K.set_session(session)
在这里,使用booleansGPU和CPU,我们通过严格定义Tensorflow会话允许访问的GPU和CPU的数量来指示是否希望使用GPU或CPU运行代码。变量num_GPU和num_CPU定义此值。num_cores然后通过intra_op_parallelism_threads和inter_op_parallelism_threads设置可供使用的CPU核心数。
变量intra_op_parallelism_threads指定允许在计算图中的单个节点中使用并行操作的线程数(intra)。而inter_ops_parallelism_threads变量定义了跨计算图(inter)节点的并行操作可访问的线程数。
allow_soft_placement如果满足以下任何条件,则允许在CPU上运行操作:此操作没有GPU实现
没有已知或注册的GPU设备
需要与来自CPU的其他输入一起定位
所有这些都是在任何其他操作之前在类的构造函数中执行的,并且与我使用的任何模型或其他代码完全分离。
注意:这需要安装tensorflow-gpu和cuda/cudnn,因为该选项被指定为使用GPU。
参考文献: