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]]