tf.all_variables()等效于状态

时间:2016-05-24 15:06:45

标签: tensorflow

tf.all_variables()给出了所有Graph变量。是否有所有州张量的等价物?

背景:我想调试我的Graph的行为。所以我一次又一次地想要检查一些输入馈送的状态张量。通常,您在构建Graph时会定义这些,然后

session.run(looking_for_this_tensor,input_feed)

检查他们。

但是,我会更喜欢这样的事情:

for v in tf.all_state_tensors_type_of_method():
    print (v.name, ': ', session.run(v, input_feed))

有类似的东西吗?看得很广,却找不到它。

2 个答案:

答案 0 :(得分:1)

这样做的一种方法是在图中的每个操作上运行一个循环,并为每个操作打印其输出。

代码看起来像这样:

graph = tf.get_default_graph()
with tf.Session() as sess:
    for op in graph.get_operations():
        for tensor in op.outputs:
            print tensor.name, ':', sess.run(tensor, feed_dict=input_feed)

警告

使用大图和大尺寸张量进行操作会导致完全混乱,因为它将打印计算中使用的每个子张量。
您还需要参考Tensorboard以获取张量的确切名称,和/或采用良好的命名约定(例如tf.name_scope())。

答案 1 :(得分:1)

您还可以向集合中添加要检查的张量。

t1 = ... variable / constant
t2 = ... variable / constant

tf.add_to_collection("inspect", t1)
tf.add_to_collection("inspect", t2)
sess = tf.InteractiveSession()
sess.run(..., feed_dict={..})
for v in tf.get_collection("inspect):
    v.eval()