gpt4 book ai didi

tensorflow - 首先 tf.session.run() 的执行与以后的运行截然不同。为什么?

转载 作者:行者123 更新时间:2023-12-04 08:03:25 29 4
gpt4 key购买 nike

这里有一个例子来阐明我的意思:
第一个 session.run():
First run of a TensorFlow session

稍后 session.run():
Later runs of a TensorFlow session

我知道 TensorFlow 在这里进行了一些初始化,但我想知道这在源代码中的哪个位置。 这种情况在 CPU 和 GPU 上都会发生,但在 GPU 上效果更突出。例如,在显式 Conv2D 操作的情况下,第一次运行在 GPU 流中有大量的 Conv2D 操作。事实上,如果我改变 Conv2D 的输入大小,它可以从数十到数百个流 Conv2D 操作。但是,在以后的运行中,GPU 流中始终只有五个 Conv2D 操作(无论输入大小如何)。在 CPU 上运行时,我们在第一次运行中保留了与后续运行相同的操作列表,但我们确实看到了相同的时间差异。

TensorFlow 源代码的哪一部分负责这种行为? GPU 操作在哪里“ split ”?

谢谢您的帮助!

最佳答案

tf.nn.conv_2d() op 在第一个 tf.Session.run() 上运行需要更长的时间调用,因为默认情况下,TensorFlow 使用 cuDNN 的自动调整功能来选择如何尽可能快地运行后续卷积。您可以看到自动调谐调用 here .

有一个undocumented environment variable您可以使用它来禁用自动调谐。套装TF_CUDNN_USE_AUTOTUNE=0当您启动运行 TensorFlow 的进程(例如 python 解释器)以禁用其使用时。

关于tensorflow - 首先 tf.session.run() 的执行与以后的运行截然不同。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45063489/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com