gpt4 book ai didi

python - TensorFlow 函数中的打印语句

转载 作者:太空宇宙 更新时间:2023-11-04 04:45:14 26 4
gpt4 key购买 nike

我是 TensorFlow 的新手,我正在尝试在将从 TensorFlow session 调用的函数中打印向量的形状。

问题在于此行(显示为注释掉)仅在最初定义此函数模板时执行(而不是在 TensorFlow session 期间的每次迭代中执行)。如何添加打印语句以便在每次 TensorFlow 迭代时调用它?

def Q(X):
# f_debug.write('Q(X) :: X.shape :: ' + str(X.shape) + '\n')

h = tf.nn.relu(tf.matmul(X, Q_W1) + Q_b1)
z = tf.matmul(h, Q_W2) + Q_b2
return z

最佳答案

这是一个需要注意的重点,也是TF中常见的混淆点。该函数不会在 session 中由 tensorflow 调用,除了 tf.py_func 外,没有 python 函数会调用,这可能是您问题的解决方法。

Tensorflow 调用您的函数 Q 只是为了获取符号操作,然后将这些操作添加到依赖关系图中。在 session 期间,依赖图是执行计算所依赖的全部。即使您使用的是 tf.whiletf.cond 或其他控制流操作。这些都不会在 session 期间调用 python,它们只是循环遍历您定义的依赖关系图中的元素。

一般来说,除了使用 Tensorflow 调试器(根本不难配置)之外,没有什么好的方法可以停止执行 tensorflow 中间图执行。但作为一种解决方法,您可能会定义一个 tf.py_func python 函数。此函数将张量编码为 python 对象并在 session 执行期间调用 python(它效率不高或其他任何东西,但在某些情况下很方便)。

您可能需要使用 with tf.control_dependencies(...): 来强制运行您的 tf.py_func 操作(因为它没有任何依赖性如果它里面只有打印语句)。

免责声明:我没有以这种方式使用过 tf.py_func,也不是为此目的而构建的。

关于python - TensorFlow 函数中的打印语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49782180/

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