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))
有类似的东西吗?看得很广,却找不到它。
答案 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()