微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – TensorFlow – 显示会话中的所有变量

我玩了一点

import tensorflow as tf
x = tf.Variable([1.0,2.0])
initializer = tf.global_variables_initializer()
session.run(initializer)
x
<tf.Variable 'Variable:0' shape=(2,) dtype=float32_ref>
y = 2 * x
y
<tf.Tensor 'mul:0' shape=(2,) dtype=float32>
z = y + 1
z
<tf.Tensor 'add:0' shape=(2,) dtype=float32>
v = session.run(x)
sess.run(initializer)
v = sess.run(x) 
print (v)
[ 1.  2.]
v1 = sess.run(z)
print (v1)
[ 3.  5.]
v = sess.run(x)

我有3个变量x,y,z.是否可以显示使用提示中的一个命令定义的所有变量?
如果我尝试Jonas的建议

new = tf.trainable_variables()
print (new)
[<tf.Variable 'Variable:0' shape=(2,) dtype=float32_ref>]

解决方法

tf.trainable_variables()打印出图表中的所有可训练变量,在您的情况下,只有x.当你做y = 2 * x时,这实际上隐含地定义了一个常量值mul / x,并将原始变量作为Variable / read

如果您运行以下代码

x = tf.Variable(1)
y = 2 * x
z = y + 1
for v in tf.get_default_graph().as_graph_def().node:
  print v.name

您将获得以下输出

Variable/initial_value
Variable
Variable/Assign
Variable/read
mul/x
mul
add/y
add

这些是图表中的所有节点.您可以使用它来过滤掉所需的所有相关信息.具体到你的情况,我不会调用y和z变量.

请注意,这是从图表而不是会话中获取所有信息.如果您想从特定会话中获取它,您需要获得相关会话并调用sess.graph.

最后一点,上面的例子使用了v.name,但是每个图节点实际上都有更多的属性,比如name,op,input,device,attr.有关更多信息,请参阅API.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐