下面是一个示例来阐明我的意思:
First session.run():
TensorFlow会话的首次运行
稍后session.run():
稍后运行TensorFlow会话
我了解TensorFlow在这里进行一些初始化,但是我想知道这在源代码中体现了什么。这在CPU和GPU上都发生,但是在GPU上的影响更为明显。例如,在显式Conv2D操作的情况下,第一次运行在GPU流中具有大量Conv2D操作。实际上,如果我更改Conv2D的输入大小,则它可以从数十个流转换为Conv2D操作。但是,在以后的运行中,GPU流中始终只有五个Conv2D操作(与输入大小无关)。在CPU上运行时,与以后的运行相比,我们在第一次运行中保留了相同的操作列表,但是确实看到了相同的时间差异。
TensorFlow源的哪一部分负责此行为?GPU操作在哪里“分裂”?
谢谢您的帮助!