TensorFlow:test_session和设备放置

时间:2017-05-06 06:11:11

标签: python-3.x tensorflow

我正在尝试使用FileNotFoundError并专门针对GPU和CPU进行测试。为此,我正在使用tf.test.TestCase并将self.test_session设置为force_gpuTrue。但是,在没有GPU的计算机上运行时,行为会有所不同,具体取决于False是否设置为log_device_placement

True

,即使没有GPU,

也不会报告错误

with self.test_session(force_gpu=True) as sess:
    <add_ops>
    sess.run()

一样。为什么日志记录会影响行为?

1 个答案:

答案 0 :(得分:0)

相关的代码片段在这里: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/framework/test_util.py#L385

启用日志记录不会影响行为;这是如何启用日志记录的意外副作用。

要启用日志记录,您提供了tf.ConfigProto(),其中除log_device_placement之外的所有字段都有其默认值。如果您没有明确地为它们提供值,则协议缓冲区的布尔字段默认为False。特别是,allow_soft_placement默认为False

通常情况下,如果您未将tf.test_session()设置为allow_soft_placementTrue会将force_gpu设置为True。但是,如果您提供自己的ConfigProto,则不会覆盖allow_soft_placement的值(除非您将force_gpu设置为True)。

(可以说test_session() API可以改进,但这可能是关于GitHub问题的更好的讨论。)

希望这有帮助!