#tf.variable_scope可以让变量有相同的命名,包括tf.get_variable得到的变量,还有tf.Variable的变量 这两个不能同时出现需要引掉一个
#tf.name_scope可以让变量有相同的命名,只是限于tf.Variable的变量
import tensorflow as tf
#使用tf.name_scope tf.variable_scope时的区别
with tf.name_scope('123'):
with tf.name_scope('456'):
with tf.variable_scope('789'):
# a = tf.Variable(1,name='a')
# print(a.name)#123/456/789/a:0 变量名出现
b = tf.get_variable('b',1)
print(b.name)#789/b:0 变量名出现
#使用tf.name_scope时 同一个scope被声明两次的时候 scope名字不会出现两次而会创造一个全新的变量名
with tf.name_scope('123'):
with tf.name_scope('456'):
a = tf.Variable(1,name='a')
print(a.name)#123/456/789/a:0 变量名出现
with tf.name_scope('456'):
with tf.name_scope('789'):
# c = tf.Variable(1,name='c')
# print(c.name)#123/456_1/789/c:0 当456再次出现的时候会与第一次a不重复
d = tf.Variable(1,name='d')
print(d.name)#123_1/456_1/789/d:0 当456再次出现的时候会与第一次a不重复
#使用tf.variable_scope时 同一个scope被声明两次的时候 scope名字会出现两次
#with tf.name_scope('123'):
# with tf.name_scope('456'):
# with tf.variable_scope('789'):
# a = tf.Variable(1,name='a')
# print(a.name)#123/456/789/a:0 变量名出现
# with tf.variable_scope('789'):
# e = tf.get_variable('e',1)
# print(e.name)#789/e:0 变量名出现 重复
#其他情况的例子
#with tf.name_scope('V1'):
# a1 = tf.get_variable(name='a1',shape=[1],initializer=tf.constant_initializer(1))
# print(a1.name)#a1:0 没有输出变量名 不能输出随机的变量名是唯一的
# a2 = tf.Variable(tf.random_normal(shape=[4,5],mean=0,stddev=1),name='a2')
# print(a2.name)#V1_1/a2:0 V1_2/a2:0 V1_5/a2:0 输出随机的变量名
#with tf.variable_scope('V2'):
# a1 = tf.get_variable(name='a1',shape=[1],initializer=tf.constant_initializer(1))
# print(a1.name)#V2/a1:0 输出变量名 不能输出随机的变量名是唯一的
# a2 = tf.Variable(tf.random_normal(shape=[4,5],mean=0,stddev=1),name='a2')
# print(a2.name)#V1_1/a2:0 V1_2/a2:0 V1_5/a2:0 输出随机的变量名