#如果存在函数复用的情况 比如add用了好几次 那么后面的operation名字是什么样子的呢
import tensorflow as tf
def calu(a,b):
out = tf.add(a,b,name='add')
return out
a = tf.get_variable('w1',[1],tf.float32,tf.ones_initializer())
b = tf.get_variable('w2',[1],tf.float32,tf.ones_initializer())
#c = tf.add(a,b,name='add')
m1 = calu(a,b)
m2 = calu(m1,b)
m3 = tf.add(m2,b,name='hhh')
g = tf.get_default_graph()
m = g.get_operation_by_name('add_1').outputs[0]
n = g.get_tensor_by_name('add:0')
t = g.get_tensor_by_name('w1:0')
op = g.get_operations()
print(op)
print(a)
print(t)
print(m)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
#print(sess.run(c))
print(sess.run(m))
print(sess.run(n))
print(sess.run(t))
#结果如下:
[<tf.Operation 'w1/Initializer/ones' type=Const>, <tf.Operation 'w1' type=VariableV2>, <tf.Operation 'w1/Assign' type=Assign>, <tf.Operation 'w1/read' type=Identity>, <tf.Operation 'w2/Initializer/ones' type=Const>, <tf.Operation '
w2' type=VariableV2>, <tf.Operation 'w2/Assign' type=Assign>, <tf.Operation 'w2/read' type=Identity>, <tf.Operation 'add' type=Add>, <tf.Operation 'add_1' type=Add>, <tf.Operation 'hhh' type=Add>]
#就是说明第一个叫add 第二个叫add_1以此类推即可
#通过这种方式 对于复用某些函数的神经网络 我们也可以print到对应的输出