TensorFlow变量管理

tf.variable_scope函数

 Tensorflow提供了通过变量名称来创建或获取一个变量的机制。通过这个机制,在不同的函数中可以直接通过变量的名字来使用变量,而不需要将变量通过参数的形式到处传递。TensorFlow主要通过tf.get_variable和tf.variable_scope函数实现。
 tf.get_variable用于创建变量时,它和tf.Variable的功能基本是等价的。

v = tf.get_variable("v",shape = [1],initializer = tf.constant_initializer(1.0))   
v = tf.Variable(tf.constant(1.0,shape = [1]),name="v")

 TensorFlow提供了7中不同的初始化函数。

TensorFlow中的变量初始化函数.PNG

 tf.get_variable函数与tf.Variable函数最大的区别在于:对于tf.Variable函数,变量名称可选,对于tf.get_variable函数,变量名称必选。创建变量时,tf.get_variable首先会试图去创建一个指定name的参数,如果创建失败就会报错。如果需要通过tf.get_variable获取一个已经创建的变量,需要通过tf.variable_scope函数生成一个上下文管理器,并明确指定在这个上下文管理器中,tf.get_variable将直接获取已经生成的变量。
样例.PNG

 TensorFlow中tf.variable_scope函数是可以嵌套的。
函数嵌套.PNG

 tf.variable_scope函数生成的上下文管理器也会创建一个TensorFlow中的命名空间,在命名空间内创建的变量名称都会带上这个命名空间作为前缀。所以,tf.variable_scope函数除了可以控制tf.get_variable执行的功能之外,这个函数也提供了管理变量命名空间的方式。
命名空间变量拷贝.PNG

tf.name_scope函数

除了tf.variale_scope函数,tf.name_scope函数也提供了命名空间管理的功能。这两个函数在大部分情况下是等价的,唯一的区别是在使用tf.get_variable函数时。

tf.name_scope.PNG

 通过对命名空间的使用,TensorBoard可以将节点有效地合并,从而突出神经网络的整体结构。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容