根据tensor的名字获取变量的值
需求:
有时候使用slim这种封装好的工具,或者是在做滑动平均时,系统会帮你自动建立一些变量,但是这些变量只有名字,而没有显式的变量名,所以这个时候我们需要使用那个名字来获取其对应的值。 如下:
也就是tensor的名字,以及在变量域名字,在tensorflow中tensor的名字就会被 : 域名/变量名记录下来,
在模型中我们需要用到这些tensor的时候可以直接通过变量名来获取相关的结果,比如说预测中会用到:
(1)input = np.random.randn(4,3)
net = slim.fully_connected(input,2,weights_initializer=tf.ones_initializer(dtype = tf.float32))
这段代码看似简单,但其实帮你生成了一个w和一个b。如果你运行下面代码:在这个全连接层中会有权重和偏置出现------->tensor ----> tensorflow中的tensor的属性就是(名称,形状,类型),在预测阶段中可以通过tensor的名称获取预测值:
(2)with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for v in tf.global_variables():
print(v)------(查看所有的tensor的属性)
打印输出:<tf.Variable ‘fully_connected/weights:0’ shape=(3, 2) dtype=float64_ref>
<tf.Variable 'fully_connected/biases:0' shape=(2,) dtype=float64_ref>
这样两个变量,但是由于没有显式声明,所以我们要从其名字取值。
从tensorflow图中取tensor的方式(均是通过名称来取的):
通过图取
方式1: print(sess.run(tf.get_default_graph().get_tensor_by_name(“fully_connected/weights:0”)))
在图的域中用名称取
方式2:print(sess.run(“fully_connected/weights:0”))