在TensorFlow中以不同的设备模式运行多个图形

时间:2017-05-02 23:22:47

标签: tensorflow

我同时在多个图表上操作。 举个例子,我想用一个图表来使用CPU而另一个图表来使用GPU。 我怎样才能做到这一点?

当前的方法及其问题

当我使用带有tf.Session()的{​​{1}}时,它不起作用,仍然使用GPU。

tf.ConfigProto

我必须使用环境变量config = tf.ConfigProto( device_count = {'GPU': 0} ) 来禁用GPU。我后来使用CUDA_VISIBLE_DEVICES在我的工作之后删除了这个变量。

这些解决方案对我没用,因为对于一个图表我想要使用GPU而另一个我不希望使用GPU。设置os.unsetenv()会影响图表。

我如何实现目标?

1 个答案:

答案 0 :(得分:1)

tf.ConfigProto()创建的配置可以为会话设置可见设备。例如:

config_cpu = tf.ConfigProto()
config_cpu.gpu_options.visible_device_list=''
sess_cpu = tf.Session(config=config_cpu)

config_gpu = tf.ConfigProto()
config_gpu.gpu_options.visible_device_list='0'
sess_gpu = tf.Session(config=config_gpu)

然后会话中的图形sess_cpu应仅在CPU上运行,而会话中的图形sess_gpu应仅在GPU 0上运行。为了防止占用整个GPU内存的张量流,您可以设置config_gpu.gpu_options.allow_growth=True。可根据您的定制需求采用类似配置。如果要使用其他配置,可以查看tf.ConfigProto