tensorflow默认的集合(collection)中
tf.GraphKeys.VARIABLES 管理所有变量
tf.GraphKeys.TRAINABLE_VARIABLES 管理可学习(训练)的变量
tf.get_variable()和tf.Variable()默认trainable=True ,创建的变量都会加入到以上两个集合中
trainable=False时,创建的变量不会加入到tf.GraphKeys.TRAINABLE_VARIABLES 集合中
tf.trainable_variables函数
tf.trainable_variables(scope=None)
功能:返回使用 trainable=True 创建的所有变量.
传递 trainable=True 时,Variable() 构造函数会自动将新变量添加到图形集合 GraphKeys.TRAINABLE_VARIABLES 中.这个便利函数返回该集合的内容.
函数参数:
- scope:(可选)一个字符串.如果提供,对结果列表进行过滤,以便只包含 name 属性与使用 re.match 匹配 scope 的项.如果提供了作用域,则不会返回没有 name 属性的项目.这种 re.match 选择意味着 scope 没有特殊的令牌通过前缀进行过滤.
函数返回值:
tf.trainable_variables函数返回 Variable 对象的列表.
tf.global_variables()与tf.all_variables()等价
tf.global_variables(scope=None)
功能:返回所有变量.
案例——作用域
import tensorflow as tf
tf.constant(1,dtype=tf.float32,shape=[3,3,3,3],name='d')
with tf.variable_scope('name_1'):
tf.get_variable('a',shape=[3,3,3,3],dtype=tf.float32,initializer=tf.truncated_normal_initializer(stddev=0.01),trainable=True)
tf.get_variable('b',shape=[3,3,3,3],dtype=tf.float32,initializer=tf.truncated_normal_initializer(stddev=0.01),trainable=False)
tf.get_variable('c',shape=[3,3,3,3],dtype=tf.float32,initializer=tf.truncated_normal_initializer(stddev=0.01))
tf.Variable(initial_value=tf.truncated_normal(shape=[3,3,3,3],stddev=0.01))
#获取可训练变量
variable=tf.trainable_variables()
#获取变量空间'name_1'中的变量
variable_global=tf.global_variables(scope='name_1')
#获取所有变量
variable_all=tf.all_variables()
print(variable)
print(len(variable))
print(variable_global)
print(variable_all)