这里有一个例子来说明我的意思:
First session.run():
First run of a TensorFlow session
later session.run():
TensorFlow session 的后续运行
我知道 TensorFlow 在这里进行了一些初始化,但我想知道它在源代码中的哪个位置。这发生在 CPU 和 GPU 上,但在 GPU 上效果更突出。例如,在显式 Conv2D 操作的情况下,第一次运行在 GPU 流中具有大量的 Conv2D 操作。事实上,如果我改变 Conv2D 的输入大小,它可以从几十到几百个流 Conv2D 操作。然而,在以后的运行中,GPU 流中始终只有五个 Conv2D 操作(无论输入大小如何)。在 CPU 上运行时,我们在第一次运行时保留了与以后运行相同的操作列表,但我们确实看到了相同的时间差异。
TensorFlow 源代码的哪一部分是造成这种行为的原因?GPU 操作在哪里“拆分”?
谢谢您的帮助!