【发布时间】:2018-04-11 18:31:38
【问题描述】:
我是 TensorFlow 新手,我正在尝试在一个函数中打印一个向量的形状,该函数将从 TensorFlow 会话中调用。
问题是这一行(显示已注释掉)仅在最初定义此函数模板时执行(而不是在 TensorFlow 会话期间的每次迭代中)。如何添加打印语句,以便在每次 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
【问题讨论】:
-
f_debug只是您要输出调试信息的文件吗? -
有什么原因不能只使用python内置的
print()函数吗? -
挑战在于函数 Q 可能也不会在每次 TF 迭代时运行。稍后在代码中,句柄
z将在每次迭代时被解析,从而导致它所依赖的 TF 节点的解析链,例如句柄h。您可以使用tf.print将打印节点添加为 z 的依赖项,当 z 被解析时将打印出来。 -
这花了我很长时间才能理解我的代码,但是像
Q这样的函数只是“图形生成器”函数,它们返回一个可以执行的句柄节点(一个张量)像z/稍后解决。
标签: python logging tensorflow