2017-03-23 64 views
1

通过我的网络中的正向传递,我想记录特定tf.variable所需的值。有没有简单的方法来做到这一点?Tensorflow:跟踪张量需要的值

+0

看看[TensorBoard](https://www.tensorflow.org/get_started/summaries_and_tensorboard)。这在很大程度上取决于你对变量做什么。如果它只是一个标量变量,你可以绘制它。要获得确切的值,请将张量引用传递给'session.run()'并获取完整输出。 – golmschenk

回答

0

您可以在tensorflow变量需要的每一步调试值。

+0

你能否详细说明我该怎么做? – fragman

1

有几种方法可以在TensorFlow中记录或调试数据。

最简单的是在会话中运行它,或者eval。例如

import tensorflow as tf 
sess = tf.InteractiveSession() 

v = tf.Variable([0.0]) 
# you can do other graph things here. 

print sess.run(v) 
# alternatively 
print v.eval() 

这通常是不可能的,所以另一种方法是将tf.Print ops放入图中。以下是如何在使用变量时打印变量的方法。

import tensorflow as tf 

v = tf.Variable([0.0], name="the_var") 
v = tf.Print(v, [v], "the_var = ") 

# ... do things with 'v' as if it was the variable op 

tf.Print运算将只打印前几个项目,如果你有一个大的张量,因此检查文档的summarizefirst_n参数来控制多少记录。

您也可以使用TensorBoard在图形执行过程中记录变量的摘要。如果您还没有使用它,那么您应该在之前,TensorFlow中的许多高级API已经在TensorBoard上执行过程中记录了很多关于模型变量的信息。要在TensorBoard中执行自己的日志记录,请使用类似tf.summary.scalartf.summary.histogram的东西。

v = tf.Variable([0.0]) 
# this will log to the 'distributions' tab in tensorboard too 
tf.summary.scalar(v) 
tf.summary.histogram(v) 

退房的文档,了解如何执行过程中保存这些汇总到磁盘的详细信息:https://www.tensorflow.org/get_started/summaries_and_tensorboard

最后,还有一个调试器可用于TensorFlow,tfdbg,您可以用来逐步执行图形执行并转储张量的内容。