【tensorflow】tensorflow中的全局变量GLOBAL_VARIABLES及局部变量LOCAL_VARIABLES

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shwan_ma/article/details/84852843

在初学tensorflow的时候,我们会发现在函数体内定义tf.variable()或者tf.get_variable()变量的时候,跟其他语言不同,在tensorflow的函数体内定义的变量并不会随着函数的执行结束而消失。这是因为tensorflow设置的全局变量及局部变量与其他语言有着本质的不同,这是因为tf里面是由图定义的,内部的变量区分为

tf.GraphKeys.GLOBAL_VARIABLES               #=> 'variables'                                                                                                                                                                                 
tf.GraphKeys.LOCAL_VARIABLES                #=> 'local_variables'                                                                                                                                                                           
tf.GraphKeys.MODEL_VARIABLES                #=> 'model_variables'                                                                                                                                                                           
tf.GraphKeys.TRAINABLE_VARIABLES            #=> 'trainable_variables' 



本文主要分析GLOBAL_VARIABLES与LOCAL_VARIABLES之间的区别:

  • 对于局部变量来说,其变量也是一种普通的变量,不过其定义在tf.GraphKeys.LOCAL_VARIABLES。通常该集合用于保存程序用于初始化的默认变量列表,因此local指定的变量在默认情况下不会保存。即不会保存到checkpoint中
  • 定义一个局部变量:需要显示指定所在的变量集合collection
    e = tf.Variable(6, name='var_e', collections=[tf.GraphKeys.LOCAL_VARIABLES])
    





此处举一个例子来表明TF的全局变量及局部变量:

import tensorflow as tf

def some_func():
    z = tf.Variable(1, name='var_z')

a = tf.Variable(1, name='var_a')
b = tf.get_variable('var_b', 2)
with tf.name_scope('aaa'):
    c = tf.Variable(3, name='var_c')

with tf.variable_scope('bbb'):
    d = tf.Variable(3, name='var_d')

some_func()
some_func()

print [str(i.name) for i in tf.global_variables()]
print [str(i.name) for i in tf.local_variables()]

结果:

['var_a:0', 'var_b:0', 'aaa/var_c:0', 'bbb/var_d:0', 'var_z:0', 'var_z_1:0']
[]

猜你喜欢

转载自blog.csdn.net/shwan_ma/article/details/84852843