tf.trainable_variables(), tf.all_variables(), tf.global_variables()查看变量
在使用tensorflow搭建模型时,需要定义许多变量,例如一个映射层就需要权重与偏置。当网络结果越来越复杂,变量越来越多的时候,就需要一个查看管理变量的函数,在tensorflow中,tf.trainable_variables(), tf.all_variables(),和tf.global_variables()可以来满足查看变量的要求,来简单说一下他们的不同。
tf.trainable_variables()
顾名思义,这个函数可以也仅可以查看可训练的变量,在我们生成变量时,无论是使用tf.Variable()还是tf.get_variable()生成变量,都会涉及一个参数trainable,其默认为True。以tf.Variable()为例:
__init__(
initial_value=None,
trainable=True,
collections=None,
validate_shape=True,
...
)
对于一些我们不需要训练的变量,比较典型的例如学习率或者计步器这些变量,我们都需要将trainable设置为False,这时tf.trainable_variables() 就不会打印这些变量。举个简单的例子,在下图中共定义了4个变量,分别是一个权重矩阵,一个偏置向量,一个学习率和计步器,其中前两项是需要训练的而后两项则不需要。
tf.global_variables()
回到第一个例子,如果我希望查看全部变量,包括我的学习率等信息,可以通过tf.global_variables()来实现。效果如下:
tf.all_variables()
与tf.global_variables()作用拥有相似的功能,只是版本问题,可以看到:
应用中
在实际代码中,我们可以在定义model的时候,定义一个内部函数用来查看模型中的变量,在训练过程中,可以在开始的时候调用一次,来看一下变量名称及其阶数,对模型控制性更强,了解更加明确。