tensorflow关于get_tensor_by_name的理解

Tensorflow为每一个操作自动设定了唯一的名称,这个名称与编程中的命名无关。有两个方法覆盖这个自动的命名:

  • 每个创建新操作或者返回新张量的的函数都接受name参数例如tf.constant(42.0, name=“answer”)就会创建一个名叫answer的操作,并返回一个名叫answer:0的张量,如果默认图已经存在同名操作,那么新操作就会被自动添加_1,_2这样的结尾。
  • tf.name_scope方法可以针对一个上下文环境添为特定范围内的操作都添加名称前缀。/斜杠用来划分name_scope的层级,如果已有同名,则自动添加_1,_2。

链接:https://www.jianshu.com/p/75bb929cf513

c_0 = tf.constant(0, name="c")  # 得到名称为c的操作
c_1 = tf.constant(2, name="c")  # 重名!得到名称为c_1的操作

#外层的命名空间.
with tf.name_scope("outer"):
  c_2 = tf.constant(2, name="c")  #outer/c
  with tf.name_scope("inner"): #嵌套的命名空间
    c_3 = tf.constant(3, name="c")  #outer/inner/c
  c_4 = tf.constant(4, name="c")  #重名!变为outer/c_1
  with tf.name_scope("inner"):
    c_5 = tf.constant(5, name="c")  #重名!变为outer/inner_1/c
import tensorflow as tf
a = tf.get_variable('w1',[3,3],tf.float32,tf.ones_initializer())
b = tf.get_variable('w2',[3,3],tf.float32,tf.ones_initializer())
bb=a+b

c = tf.layers.dense(bb,5, activation=None,name='add') #获取网络层的输出只更改最后一维
g = tf.get_default_graph()

t = g.get_tensor_by_name('w1:0')
n = g.get_tensor_by_name('add:0') #获取网络层的输入
n1 = g.get_tensor_by_name('add/kernel:0') #获取网络层的权重

print(a)
print(t)

print(c)
print(n)
print(n1)


with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(a))
    print(sess.run(t))

    print(sess.run(c))   #输出FC结果
    print(sess.run(n))   #打印add的输入
    print(sess.run(n1))  #打印add的权重
    print(n1.eval())      #tf.Tensor.eval()  功能:当默认的会话被指定之后可以通过其计算一个张量的取值。

    print(sess.run(tf.matmul(n,n1))) #   =c

 
##对应输出:
<tf.Variable 'w1:0' shape=(3, 3) dtype=float32_ref>
Tensor("w1:0", shape=(3, 3), dtype=float32_ref)
Tensor("add_1/BiasAdd:0", shape=(3, 5), dtype=float32)
Tensor("add:0", shape=(3, 3), dtype=float32)
Tensor("add/kernel:0", shape=(3, 5), dtype=float32_ref)


[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]

[[1. 1. 1.]
 [1. 1. 1.]
 [1. 1. 1.]]

[[-1.3647698 -2.8054194 -1.7050204  3.338818   2.5336776]
 [-1.3647698 -2.8054194 -1.7050204  3.338818   2.5336776]
 [-1.3647698 -2.8054194 -1.7050204  3.338818   2.5336776]]

[[2. 2. 2.]
 [2. 2. 2.]
 [2. 2. 2.]]

[[-0.65962625 -0.769727    0.24005729  0.7080906   0.10090774]
 [ 0.29028767 -0.5869036  -0.6289141   0.6177673   0.43807036]
 [-0.31304634 -0.04607916 -0.4636534   0.3435511   0.72786075]]

[[-0.65962625 -0.769727    0.24005729  0.7080906   0.10090774]
 [ 0.29028767 -0.5869036  -0.6289141   0.6177673   0.43807036]
 [-0.31304634 -0.04607916 -0.4636534   0.3435511   0.72786075]]

[[-1.3647698 -2.8054194 -1.7050204  3.338818   2.5336776]
 [-1.3647698 -2.8054194 -1.7050204  3.338818   2.5336776]
 [-1.3647698 -2.8054194 -1.7050204  3.338818   2.5336776]]






 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值