#tensorflow中关于变量的管理
import tensorflow as tf
with tf.variable_scope("good"):#上下文管理器命名空间
#变量管理用tf.variable_scope()函数,当参数reuse=False,tf.get_variable()创建变量,当参数reuse=True,tf.get_variable()获取前面创建的变量值
a1 = tf.get_variable(name='a',shape=[1,2],dtype=tf.float32,initializer=tf.truncated_normal_initializer(stddev=0.1))
with tf.variable_scope("good", reuse=True):#reuse=True获取上面创建的名称为a的变量
a2 = tf.get_variable(name='a')
print(a1 == a2)
with tf.variable_scope('A'):#上下文管理器嵌套的使用例子
with tf.variable_scope('B'):
c = tf.get_variable(name='b',shape=[2,3],initializer=tf.truncated_normal_initializer(stddev=0.1))#嵌套中创建变量
print(tf.get_variable_scope().reuse)
with tf.variable_scope('C',reuse=True):
print(tf.get_variable_scope().reuse)
print(tf.get_variable_scope().reuse)
with tf.variable_scope('',reuse=True):
d = tf.get_variable('A/B/b')#通过命名空间获取变量
print(c==d)
结果:
True
False
True
False
True
关于使用变量管理的好处:使程序更简单,可读性更强。当需要使用训练好的模型只需要把reuse设置为True