一 实例
分别使用Variable定义变量和使用get_variable来定义变量
二 代码
import tensorflow as tf
tf.reset_default_graph()
var1 = tf.Variable(1.0 , name='firstvar')
print ("var1:",var1.name)
var1 = tf.Variable(2.0 , name='firstvar')
print ("var1:",var1.name)
var2 = tf.Variable(3.0 )
print ("var2:",var2.name)
var2 = tf.Variable(4.0 )
print ("var1:",var2.name)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print("var1=",var1.eval())
print("var2=",var2.eval())
get_var1 = tf.get_variable("firstvar",[1], initializer=tf.constant_initializer(0.3))
print ("get_var1:",get_var1.name)
#get_var1 = tf.get_variable("firstvar",[1], initializer=tf.constant_initializer(0.4))
#print ("get_var1:",get_var1.name)
get_var1 = tf.get_variable("firstvar1",[1], initializer=tf.constant_initializer(0.4))
print ("get_var1:",get_var1.name)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print("get_var1=",get_var1.eval())
三 运行结果
var1: firstvar:0
var1: firstvar_1:0
var2: Variable:0
var1: Variable_1:0
var1= 2.0
var2= 4.0
get_var1: firstvar_2:0
get_var1: firstvar1:0
get_var1= [ 0.40000001]
四 说明
1 代码定义了两次var1,可以看到在内存中生成了两个var1(因为他们的name不一样),对于图来讲后面的var1是生效的(var1=2.0)。
2 var2表明了:Variable定义时没有指定名字,系统会自动给出一个名字Variable。
3 get_var1的name不能重复,这里第一次name是firstvar,第二次是firstvar1,如果第二次也用firstvar,程序会报错。同样新的get_var1会在图中生效,所有输出的是0.4,而不是0.3。