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个变量,分别是一个权重矩阵,一个偏置向量,一个学习率和计步器,其中前两项是需要训练的而后两项则不需要。
![](https://i-blog.csdnimg.cn/blog_migrate/ead78f042669dbd0515ad2f29ab82b80.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/5c637107f7e644a68d079131fd2ca294.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/9da2108c571b335f72c7e89f75e3040d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/1374d1660e06d3df640da53f5234c06e.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/dbcb05586106145e339a4bf878e5fdc9.jpeg)
tf.global_variables()
回到第一个例子,如果我希望查看全部变量,包括我的学习率等信息,可以通过tf.global_variables()来实现。效果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/6012ba0b08576275853da463e40cd0d1.jpeg)
tf.all_variables()
与tf.global_variables()作用拥有相似的功能,只是版本问题,可以看到:
![](https://i-blog.csdnimg.cn/blog_migrate/09eee507d82b05f14e0017970f0b3f03.jpeg)
应用中
在实际代码中,我们可以在定义model的时候,定义一个内部函数用来查看模型中的变量,在训练过程中,可以在开始的时候调用一次,来看一下变量名称及其阶数,对模型控制性更强,了解更加明确。
![](https://i-blog.csdnimg.cn/blog_migrate/7c994c623da41a67261382f877f2f994.jpeg)