一个相当可分的方法是使用
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)
在这里,通过 booleans GPU 和 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 变量指示允许计算图中单个节点中的并行操作使用(内部)的线程数 . 而 inter_ops_parallelism_threads 变量定义了可在计算图(inter)的节点之间进行并行操作的线程数 .
allow_soft_placement 允许在满足以下任何条件的情况下在CPU上运行操作:
该操作没有GPU实现
没有已知或已注册的GPU设备
需要与来自CPU的其他输入共存
所有这些都是在我的类的构造函数中执行任何其他操作之前,并且可以与我使用的任何模型或其他代码完全分离 .
注意:这需要安装 tensorflow-gpu 和 cuda / cudnn ,因为该选项用于使用GPU .
参考文献: