我正在尝试使用FileNotFoundError
并专门针对GPU和CPU进行测试。为此,我正在使用tf.test.TestCase
并将self.test_session
设置为force_gpu
或True
。但是,在没有GPU的计算机上运行时,行为会有所不同,具体取决于False
是否设置为log_device_placement
。
True
,即使没有GPU,
也不会报告错误
with self.test_session(force_gpu=True) as sess:
<add_ops>
sess.run()
一样。为什么日志记录会影响行为?
答案 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_placement
,True
会将force_gpu
设置为True
。但是,如果您提供自己的ConfigProto
,则不会覆盖allow_soft_placement
的值(除非您将force_gpu
设置为True
)。
(可以说test_session()
API可以改进,但这可能是关于GitHub问题的更好的讨论。)
希望这有帮助!